调用没有主体的未实现静态方法

Calling non-implemented static method without body

本文关键字:实现 静态方法 主体 调用      更新时间:2023-10-16
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是一个完整的类型,但它并不关心TestMakeT是否有正文。