我正在学习模板参数演绎的东西,我已经多次读过< 14.8.2.1从函数调用>(C ++ 11 draft)推导模板参数,我认为它错过了一条规则:
如果P不是引用类型:如果A是引用类型,则类型推导将忽略A类型的引用限定符。
一定是我的错,但我不知道它在哪里。
答案 0 :(得分:2)
A
是函数参数的类型。函数参数是表达式,表达式从不具有引用类型。假设您有int i;
,int &r = i;
。表达式i
和表达式r
都只有int
类型,并且是左值。类型int &
都没有。在某些情况下,使用名称而不是表达式(decltype
对特定的语法结构有特殊的例外,它们不被视为表达式),在这种情况下,区别很重要,但使用作为函数参数的对象不是其中之一。