Псевдоним шаблона Visual Studio 2013

Следующий код

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»: шаблон специализированного псевдонима не может использоваться в качестве аргумента шаблона для параметра шаблона «Enable», ожидается реальный тип

Но компилируется нормально в gcc.

Соответствует ли этот код стандарту C ++ 11 и функции, не допускающей ошибок в Visual Studio, или не соответствует стандарту, а является расширением gcc.

Есть ли способ заставить эту работу в VS?

Спасибо.

3

Решение

Я смог обойти это с помощью ссылка на сайт тот 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;
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]