Ich versuche zu überprüfen, ob eine Klasse eine Methode operator==
hat. Ich fand eine Lösung mit SFINAE here und es funktioniert gut mit der Klasse, die ich mache.hat Int einen Operator ==
Es sieht wie folgt aus:
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) };
};
Aber, wenn ich versuche:
std::cout << comparable<int>::value << std::endl;
Dann gibt es falsch, während ich es erwartete wahr zurückzukehren. Warum ist das ?
Über die Frage, die Sie vor der Bearbeitung dort hatte (was die drei Punkte bedeuten), schauen diese Frage: http://stackoverflow.com/questions/1657883/variable-number-of-arguments-in-c – Anedar
Was ist, wenn "Klasse C {...}; bool operator == (const C & a, const C & b) {...} '? Ihr Code sagt, dass es keinen Operator == gibt, weil es keinen innerhalb der Klasse gibt. – immibis