SFINAE std :: enable_if在visual studio 2015中失败

时间:2015-11-08 06:02:21

标签: c++ c++11 sfinae

我试图将一个开源项目从linux移植到窗口,有一些代码在linux中使用g ++或clang ++完美编译,但我无法在MSVC 2015下编译它,有人能告诉我如何解决它或怎么绕过它?非常感谢你的帮助!!!

  

这是代码(我已将其简化,因此您可以专注于关键内容)

template <typename T, class IsMatch = void>
class vc_hashkey
{
public:
    static constexpr bool holds_value() { return false; }
};

template <typename T>
class vc_hashkey<T, typename std::enable_if<std::is_integral<T>::value>::type>
{
public:
    static constexpr bool holds_value() { return true; }
};

template <typename T, class IsMatch = void>
class vc_hashkey_and_value
{
};

template <typename T>
class vc_hashkey_and_value<T, typename std::enable_if<vc_hashkey<T>::holds_value()>::type>
{
};

那就是它,我甚至没有在我的主要功能中使用这些代码片段。当我尝试编译时,msvc 2015更新RC1编译器给出了类vc_hashkey_and_value 的部分特化的编译错误,说:

  

C2039&#39;类型&#39;:不是&#39; std :: enable_if&lt;&#39; false,void&gt;&#39;

的成员      

C2146语法错误:缺少&#39;&gt;&#39;在标识符&#39;类型&#39;

之前      

C2064术语不评估为采用0参数的函数

这是MSVC编译器错误,感谢您帮助我!!!

0 个答案:

没有答案