昨日の投稿を参考にすると、今朝は目が覚めました。なぜこれが実際に機能するのですか?関数test
に関する限り、この関数には本体がないので、どのように実行できますか?これがなぜ、どのように機能するのか知りたいですか?私はあなたの答えを見ることに本当に興味があります。
template<typename T>
class IsClassT {
private:
typedef char One;
typedef struct { char a[2]; } Two;
template<typename C> static One test(int C::*); //NO BODY HERE
template<typename C> static Two test(…); //NOR HERE
public:
enum { Yes = sizeof(IsClassT<T>::template test<T>(0)) == sizeof(One) };
enum { No = !Yes };
};
この非常に興味深い現象を理解するために助けを借りて事前に感謝します。