SFINAE no compiló [duplicar]
Esta pregunta ya tiene una respuesta aquí:
SFINAE trabajando en el tipo de retorno pero no como parámetro de plantilla 3 respuestasMuy a menudo usé SFINAE antes, pero tengo un ejemplo muy simple que no puedo ejecutar hoy.
class X
{
public:
template <typename CHECK, typename = typename std::enable_if< std::is_floating_point<CHECK>::value, void>::type >
void Do()
{
std::cout << "yes" << std::endl;
}
template <typename CHECK, typename = typename std::enable_if< !std::is_floating_point<CHECK>::value, void>::type>
void Do()
{
std::cout<< "no" << std::endl;
}
};
int main()
{
X x;
x.Do<float>();
}
Error:
src / main.cpp: 20: 18: error: 'template void X :: Do ()' no se puede sobrecargar
src / main.cpp: 14: 18: error: con 'template void X :: Do ()' void Do ()
Quiero deshabilitar cualquier sobrecarga con enable_if pero no funciona ...
¿Alguna idea de lo que hoy hice mal?