Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.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++ 引用作为参数的模板参数推断_C++_Templates_C++17_Template Argument Deduction - Fatal编程技术网

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与示例的关系如何?也许在问题中包括标准的引用啊,太完美了,我不知道!