¿Por qué enable_if_t en los argumentos de plantilla se queja de redefiniciones?
Tengo el siguiente caso que funciona usandostd::enable_if
:
template<typename T,
typename std::enable_if<std::is_same<int, T>::value>::type* = nullptr>
void f() { }
template<typename T,
typename std::enable_if<std::is_same<double, T>::value>::type* = nullptr>
void f() { }
Ahora, vi en cppreference la nueva sintaxis, mucho más limpia en mi opinión:typename = std::enable_if_t<std::is_same<int, T>::value>>
Quería portar mi código:
template<typename T,
typename = std::enable_if_t<std::is_same<int, T>::value>>
void g() { }
template<typename T,
typename = std::enable_if_t<std::is_same<double, T>::value>>
void g() { }
Pero ahora GCC (5.2) se queja:
error: redefinition of 'template<class T, class> void g()'
void g() { }
Por qué es así ? ¿Qué puedo hacer para tener la nueva sintaxis más concisa en este caso si es posible?