以下代码

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中产生错误:



但是在gcc中编译良好。

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

有什么方法可以使它在VS中工作吗?

谢谢。

最佳答案

我能够使用link提供的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;

关于c++ - Visual Studio 2013模板别名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20828846/

10-11 16:52