参考昨天的帖子,今天早上把我吵醒了。为什么这实际上有效?就函数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 };
};
提前感谢帮助了解这个非常有趣的现象。