我试图使用类型特征,如“现代C++设计”使用模板来确定一个类型是否有可变大小。例如一个字符串需要可变大小的存储,一个int具有固定大小的存储。 此代码工作在Microsoft C++,现在我移植到Mac和我得到的错误...类型特征 - 显式模板特化。在xcode上失败
什么专门的正确方法“明确的分工不是在当前范围内允许”?
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 };
};
根据“存储”的含义,字符串也有“固定大小的存储”。 –
在这种情况下,我将对象序列化到磁盘。使用整数,我只需存储4个字节。对于字符串或数组,我首先存储元素数量,然后存储实际元素。所以这段代码可以帮助我以最简洁的格式存储对象的原始字节。 – Jeff