Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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++ 使用显式参数从模板化函数中调用模板化类的模板化成员 模板 结构foo{ 模板 void f(int i){} }; 模板 空条(){ 富民; m、 f(1);//A行 } int main(){ bar(); 福安; n、 f(1);//第B行 返回0; }_C++_Templates_Gcc_C++14_Dependent Name - Fatal编程技术网

C++ 使用显式参数从模板化函数中调用模板化类的模板化成员 模板 结构foo{ 模板 void f(int i){} }; 模板 空条(){ 富民; m、 f(1);//A行 } int main(){ bar(); 福安; n、 f(1);//第B行 返回0; }

C++ 使用显式参数从模板化函数中调用模板化类的模板化成员 模板 结构foo{ 模板 void f(int i){} }; 模板 空条(){ 富民; m、 f(1);//A行 } int main(){ bar(); 福安; n、 f(1);//第B行 返回0; },c++,templates,gcc,c++14,dependent-name,C++,Templates,Gcc,C++14,Dependent Name,GCC看到为什么要使用这种模式?即使MSVC断然拒绝该关键字,我也宁愿引入一个扩展到template其他地方的宏。@DavisHerring MSVC不拒绝该关键字。符合标准的方法是编写m.template f(1)。我只是不想把这些写在我的代码上,因为我觉得这样会降低可读性。一般来说,任何允许在呼叫站点使用更简单语法的技巧都可以作为一个答案。对于那些了解该语言并对你的意思是(m.f1?唯一的技巧(除了#define H template和#define tmethod template met

GCC看到
为什么要使用这种模式?即使MSVC断然拒绝该关键字,我也宁愿引入一个扩展到
template
其他地方的宏。@DavisHerring MSVC不拒绝该关键字。符合标准的方法是编写
m.template f(1)
。我只是不想把这些写在我的代码上,因为我觉得这样会降低可读性。一般来说,任何允许在呼叫站点使用更简单语法的技巧都可以作为一个答案。对于那些了解该语言并对你的意思是
(m.f1
?唯一的技巧(除了
#define H template
#define tmethod template method
)感到惊讶的人来说,可读性如何我曾经看到,只有当
bar
可以作为派生类(模板)上的方法时,这种方法才会起作用。这里有什么值得关注的吗?@DavisHerring IMO不一致地解释a行和B行是不合理的标准
template<int N>
struct foo {
        template<int M>
        void f(int i){}
};

template<int N>
void bar() {
        foo<N> m;
        m.f<1>(1);      // line A
}

int main(){
        bar<1>();
        foo<1> n;
        n.f<1>(1);      // line B
        return 0;
}