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()。最终为什么这一切都有效。关键是这些静态函数中没有实体,因此,它们什么都不返回。请帮帮我。
答案 0 :(得分:4)
它并未真正调用,因为它是在sizeof
内部编写的,可以应用于未评估的操作数。 sizeof
正确地返回Test
返回的值的大小,因为Big
是完整类型,但它不关心Test
或MakeT
是否具有正文或不