你好!有人知道实现或模仿以下行为的方法吗? (此代码导致编译时错误).
例如,我想仅在派生类中添加特定的模板特化.
struct Base {
template <typename T> void Method(T a) {
T b;
}
template <> void Method<int>(int a) {
float c;
}
};
struct Derived : public Base {
template <> void Method<float>(float a) {
float x;
}
};
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用“现代 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 };
};
Run Code Online (Sandbox Code Playgroud)