template <class T, class U>
struct Conversion {
typedef char Small;
class Big
{
char dummy[2];
};
static Small Test(const U&);
static Big Test(...);
static T MakeT();
enum { check=sizeof( Test( MakeT() ) ) == sizeof( Small ) };
};
我在互联网上看到了这个例子。它检查两个对象的转换能力。该资源解释了旧方式 cpp 的模板技巧。我不太明白为什么在传递给 Test(( 时调用 MakeT((。最后,为什么这一切都有效。关键是这些静态函数中没有主体,因此,它们不返回任何内容。请帮帮我。
它并没有真正被调用,因为它写在可以应用于未计算操作数的sizeof
内部。sizeof
正确返回Test
返回的值的大小,因为Big
是一个完整的类型,但它并不关心Test
或MakeT
是否有正文。