के होने की जाँच करने के लिए मैं अगर एक वर्ग इस तरह एक विशेष सदस्य समारोह (एक और उदाहरण में यहां पाया) है एक टेम्पलेट के विशेषज्ञ करने का प्रयास करें: जब तक AnyFunc
ओवरलोड हो गया हैटेम्पलेट अतिभारित सदस्य समारोह
template <typename T>
class has_begin
{
typedef char one;
typedef long two;
template <typename C> static one test(decltype(&C::AnyFunc)) ;
template <typename C> static two test(...);
public:
enum { value = sizeof(test<T>(0)) == sizeof(char) };
enum { Yes = sizeof(has_begin<T>::test<T>(0)) == 1 };
enum { No = !Yes };
};
यह अच्छी तरह से काम करता है :
class B : public vector<int>
{
public:
void AnyFunc() const;
void AnyFunc();
};
मैं अपने टेम्पलेट से "हां" प्राप्त करने के लिए अपने परीक्षण कोड को फिर से लिख सकता हूं?
अच्छा सवाल। एक बहुत छोटी समस्या जो SFINAE के कारण चुपचाप ज्ञात नहीं जा सकती है। – iammilind