Я пытаюсь проверить, имеет ли класс метод operator==
. Я нашел решение с SFINAE здесь, и он отлично работает с классом, который я делаю.
Он выглядит следующим образом:
template <typename T>
class comparable
{
typedef char one;
typedef long two;
template <typename C> static one test( typeof(&C::operator==) ) ;
template <typename C> static two test(...);
public:
enum { value = sizeof(test<T>(0)) == sizeof(char) };
};
Но когда я пытаюсь:
std::cout << comparable<int>::value << std::endl;
Затем он возвращает false, пока я ожидал, что он вернет true. Почему это?