3

以下代码

template <class Integral>
using enable_if_integral_t = typename std::enable_if<std::is_integral<Integral>::value>::type;

template <class Integral, class Enable = void>
class DigitsNumber;

template <class Integral>
class DigitsNumber<Integral, enable_if_integral_t<Integral>>{
};

在 MSVC 2013 中生成错误:

错误 C3203:“enable_if_integral_t”:未专门化的别名模板不能用作模板参数“启用”的模板参数,应为真实类型

但在 gcc 中编译得很好。

此代码是否符合 C++11 标准和 Visual Studio 错误/未实现的功能,或者它不符合标准,而是 gcc 扩展。

有什么办法可以在 VS 中完成这项工作吗?

谢谢你。

4

1 回答 1

1

我能够使用 dyp 提供的链接解决问题:

template <class Integral>
struct MSVCWorkaround : std::enable_if<std::is_integral<Integral>::value, SomeType> {};

template <class Integral>
using enable_if_integral_t = typename MSVCWorkaround<Integral>::type;
于 2014-04-06T01:42:50.287 回答