Я пытаюсь использовать черты типа, как в «Современном C ++ Design», используя шаблон, чтобы определить, имеет ли тип переменный размер или нет.например, строка требует хранения переменного размера, int имеет хранение фиксированного размера.Этот код работает на Microsoft C ++, теперь я портирую на Mac и получаю ошибку:
явная специализация не разрешена в текущей области действия
Что правильноспособ специализировать это?
template <typename T>
class MyTypeTraits
{
template<class U> struct VariableLengthStorageTraits
{
enum { result = false };
};
template<> struct VariableLengthStorageTraits<std::wstring>
{
enum { result = true };
};
public:
enum{ IsVariableLengthType = VariableLengthStorageTraits<T>::result };
};