C++ 引用作为参数的模板参数推断
我试图深刻理解模板参数推导。 我不理解的一点是,我应该如何应用标准中的规则 对于类型C++ 引用作为参数的模板参数推断,c++,templates,c++17,template-argument-deduction,C++,Templates,C++17,Template Argument Deduction,我试图深刻理解模板参数推导。 我不理解的一点是,我应该如何应用标准中的规则 对于类型A和P 对于以下情况(遗憾的是,cppreference.com上没有示例,请参见下面的相关部分) 模板 void foo(T); 带引用的无效调用(int&r){ 傅(右) } P是否: 它给出了P:=T A:=int& ->匹配p和A得出:T推导为int& 这显然是错误的。标准中规定删除A中的引用的规则在哪里?如果您能给出一个不令人困惑、明确的答案,我们将不胜感激 相关章节: A是表达式的类型。表达式类
A
和P
对于以下情况(遗憾的是,cppreference.com上没有示例,请参见下面的相关部分)
模板
void foo(T);
带引用的无效调用(int&r){
傅(右)
}
是否:P
它给出了P:=T
A:=int&
p
和A
得出:T
推导为int&
这显然是错误的。标准中规定删除A
中的引用的规则在哪里?如果您能给出一个不令人困惑、明确的答案,我们将不胜感激
相关章节:
A
是表达式的类型。表达式类型由以下内容描述:
如果表达式最初具有类型“reference to T”([dcl.ref]、[dcl.init.ref]),则该类型将调整为T
所以这里的A
是int
此表达式是一个
左值
,但它不会起任何作用,因为p
不是一个引用。p和a与示例的关系如何?也许在问题中包括标准的引用啊,太完美了,我不知道!