Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无主体调用未实现的静态方法 模板 结构转换{ 类型定义字符小; 班级大 { 伪字符[2]; }; 静态小试验(常数U&); 静态大试验(…); 静态T MakeT(); 枚举{check=sizeof(Test(MakeT())==sizeof(Small)}; };_C++_Templates_Static_Metaprogramming - Fatal编程技术网

C++ 无主体调用未实现的静态方法 模板 结构转换{ 类型定义字符小; 班级大 { 伪字符[2]; }; 静态小试验(常数U&); 静态大试验(…); 静态T MakeT(); 枚举{check=sizeof(Test(MakeT())==sizeof(Small)}; };

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

我在网上看到了这个例子。它检查两个对象的转换能力。参考资料解释了旧式cpp的模板技巧。我不太明白为什么在传递给Test()时调用MakeT()。最后,为什么这一切都有效。关键是这些静态函数中没有实体,因此,它们不返回任何内容。请帮帮我。

它不是真正调用的,因为它是在
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 ) };
};