在Visual C ++ 6.0中删除const限定符

时间:2014-05-08 16:52:30

标签: c++ templates types traits vc6

问题很简单,我想使用模板元编程从类型中删除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倍。所以,是的,我们仍然使用它......

0 个答案:

没有答案