是一本解决不同问题的书。并且得到了下一件事。有一个问题,关于如何使用模板检查类是否从另一类派生。还有一个有关在编译时如何执行此操作的示例。我很想知道为什么这段代码不需要静态函数的定义。
template<typename T, typename B>
class CIsDerived
{
private:
class CIsValid
{
};
class CIsInValid
{
int sizeExp[3];
};
static CIsValid Check(B * pBaseClass);
static CIsInValid Check(...);
public:
enum
{
Is = sizeof(CIsValid) == sizeof(Check(static_cast<T*>(0)))
};
};
class CBase
{
public:
};
class CDerv : public CBase
{
public:
};
void main()
{
cout << CIsDerived<CDerv, CBase>::Is << endl;
cout << CIsDerived<string, CBase>::Is << endl;
}
有人可以提供任何书籍吗,这件事被深入解释了吗?