Bir sınıfın operator==
yöntemine sahip olup olmadığını kontrol etmeye çalışıyorum. SFINAE here ile bir çözüm buldum ve yaptığım sınıfla iyi çalışıyor. Ben çalıştığınızda,, bir işleç sahibi var ==
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) };
};
Ama:
Bu şuna benzer
std::cout << comparable<int>::value << std::endl;
Ben gerçek döndürecek şekilde bekliyordum ederken Sonra yanlış döndürür. Bu neden ?
Eğer düzenlemek (üç nokta ne anlama) önce orada vardı soruya Hakkında bakmak Bu soru: http://stackoverflow.com/questions/1657883/variable-number-of-arguments-in-c – Anedar
Sınıf C {...}; bool operatörü == (const C & a, const C & b) {...} '? Kodunuz, operatörde == olduğunu, çünkü sınıfta biri olmadığını söyleyecektir. – immibis