어제의 게시물을 참조하면 이 아침에 나를 깨웠다. 왜 실제로 작동합니까? 함수 test
에 관한 한,이 함수는 몸체가 없으므로 어떻게 수행 할 수 있습니까? 왜 그리고 어떻게 작동하는지 알고 싶습니다. 나는 정말로 당신의 답을보고 싶습니다.이것이 작동하는 이유 (템플릿, SFINAE). C++
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 };
};
이 매우 흥미로운 현상을 이해하는 데 도움을 주셔서 감사합니다.
는'3.2/2' 및 참조'3.2/3' (사용 "의"사용 "의 정의와 결과에 두 "뭔가). –