¿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?

Respuestas a la pregunta(4)

Su respuesta a la pregunta