Gab*_*iel 4 c++ templates template-argument-deduction c++17
我正在尝试深刻理解模板论证推导。我不明白的一点是,我应该如何将此处标准中的规则应用于
类型A和P
以下情况(遗憾的是 cppreference.com 上没有示例,请参阅下面的相关部分)
template<typename T>
void foo(T t);
void call_with_reference(int& r) {
foo(r)
}
Run Code Online (Sandbox Code Playgroud)
P没有参考类型:P := TA := int&-> 匹配P和A 给出:T推导为int&
这显然是错误的。标准中哪里有规定删除来自的引用A?一个不令人困惑、明确的明确答案将不胜感激。
A是表达式的类型。表达式类型由[expr.type]/1描述:
\n\n\n如果表达式最初的类型为 \xe2\x80\x9c,对 T\xe2\x80\x9d ([dcl.ref], [dcl.init.ref]) 的引用,则类型将调整为 T。
\n
所以这里A是int。
该表达式是一个lvalue但不会发挥任何作用,因为它P不是引用。
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |