मैं यह जांचने की कोशिश कर रहा हूं कि कक्षा में कोई विधि operator==
है या नहीं। मुझे SFINAE here के साथ समाधान मिला और यह मेरे द्वारा बनाई गई कक्षा के साथ ठीक काम कर रहा है।int में ऑपरेटर है ==
यह इस तरह दिखता है:
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;
तो यह झूठी देता है, जबकि मैं यह उम्मीद कर रहा था सच लौटने के लिए। ऐसा क्यों है ?
सवाल आप अपने संपादन (तीन बिंदु क्या मतलब है) से पहले में था के बारे में, देखो यह प्रश्न: http://stackoverflow.com/questions/1657883/variable-number-of-arguments-in-c – Anedar
क्या होगा यदि 'कक्षा सी {...}; बूल ऑपरेटर == (कॉन्स सी एंड ए, कॉन्स सी और बी) {...} '? आपका कोड कहता है कि कोई ऑपरेटर == नहीं है, क्योंकि कक्षा में कोई भी नहीं है। – immibis