Selecionando uma função de membro usando diferentes condições enable_if
Eu estou tentando determinar qual versão de uma função de membro é chamada com base no parâmetro de modelo de classe. Eu tentei isso:
#include <iostream>
#include <type_traits>
template<typename T>
struct Point
{
void MyFunction(typename std::enable_if<std::is_same<T, int>::value, T >::type* = 0)
{
std::cout << "T is int." << std::endl;
}
void MyFunction(typename std::enable_if<!std::is_same<T, int>::value, float >::type* = 0)
{
std::cout << "T is not int." << std::endl;
}
};
int main()
{
Point<int> intPoint;
intPoint.MyFunction();
Point<float> floatPoint;
floatPoint.MyFunction();
}
que eu pensei que está dizendo "use o primeiro MyFunction se T é int, e use o segundo MyFunction se T não é int, mas eu recebo erros de compilador dizendo" erro: nenhum tipo chamado 'tipo' em 'struct std :: enable_if' " Alguém pode apontar o que estou fazendo errado aqui?