テンプレートを使用して「最新の C++ デザイン」のような型特性を使用して、型に可変サイズがあるかどうかを判断しようとしています。たとえば、文字列には可変サイズのストレージが必要ですが、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 };
};