问题很简单,我想使用模板元编程从类型中删除const
限定符。通常你会使用C ++ 11 STL,或者在较旧的编译器中自己使用它:
template <class Type>
struct StripConst {
typedef Type Result;
};
template <class Type>
struct StripConst<const Type> {
typedef Type Result;
};
然而,VC 6.0是一个旧的编译器,它不支持部分模板专业化。它支持完全专业化,有时会被欺骗成部分,如下所示:
template <class Type>
struct StripConst {
template <class OtherType>
struct VC6Helper {
// ...
};
template <>
struct VC6Helper<Type> {
// ...
};
};
但此时此似乎毫无用处 - 无法与const Type
匹配。
我知道答案很可能是在VC 6.0版本的Loki中实现的,但其主页上的链接已被破坏。
你可能会质疑仍然使用老化的VC 6.0的动机,你可能是对的 - 但是它产生的二进制文件的性能比我从Visual Studio 2008获得的因子2和Visual Studio 2012的1.5倍。所以,是的,我们仍然使用它......