C++ 无主体调用未实现的静态方法 模板 结构转换{ 类型定义字符小; 班级大 { 伪字符[2]; }; 静态小试验(常数U&); 静态大试验(…); 静态T MakeT(); 枚举{check=sizeof(Test(MakeT())==sizeof(Small)}; };
我在网上看到了这个例子。它检查两个对象的转换能力。参考资料解释了旧式cpp的模板技巧。我不太明白为什么在传递给Test()时调用MakeT()。最后,为什么这一切都有效。关键是这些静态函数中没有实体,因此,它们不返回任何内容。请帮帮我。它不是真正调用的,因为它是在C++ 无主体调用未实现的静态方法 模板 结构转换{ 类型定义字符小; 班级大 { 伪字符[2]; }; 静态小试验(常数U&); 静态大试验(…); 静态T MakeT(); 枚举{check=sizeof(Test(MakeT())==sizeof(Small)}; };,c++,templates,static,metaprogramming,C++,Templates,Static,Metaprogramming,我在网上看到了这个例子。它检查两个对象的转换能力。参考资料解释了旧式cpp的模板技巧。我不太明白为什么在传递给Test()时调用MakeT()。最后,为什么这一切都有效。关键是这些静态函数中没有实体,因此,它们不返回任何内容。请帮帮我。它不是真正调用的,因为它是在sizeof内部编写的,可以应用于未赋值的操作数sizeof正确返回Test返回的值的大小,因为Big是一个完整类型,但它不关心Test或MakeT是否有body。它不是真正调用的,因为它写在sizeof内部,可以应用于未赋值的操作数s
sizeof
内部编写的,可以应用于未赋值的操作数sizeof
正确返回Test
返回的值的大小,因为Big
是一个完整类型,但它不关心Test
或MakeT
是否有body。它不是真正调用的,因为它写在sizeof
内部,可以应用于未赋值的操作数sizeof
正确返回Test
返回的值的大小,因为Big
是一个完整类型,但它不关心Test
或MakeT
是否有body
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 ) };
};