C ++参数替换规则

时间:2012-03-24 19:23:34

标签: c++ templates arguments template-deduction

关注C++ polymorphism with boost scoped_ptr, 我想了解C ++参数推导的规则。例如:

  1. C ++多态替换的规则,当智能指针和 使用容器
  2. const和非const参数之间的自动转换
  3. 什么时候可以作为参考传递临时文件?
  4. 模板参数推断中的规则有何不同。
  5. 如果标准中有相关部分,您可以指出这也有帮助。

1 个答案:

答案 0 :(得分:0)

我认为这个问题过于宽泛,我不明白所有问题是什么。 Jere是我的镜头:

  1. 模板推断不关心基类或转换。它推导出一种静态类型。只有在没有直接匹配的情况下,如果转换可以解决此问题,它将尝试通常只应用一次转换。例如,传递的类型是一个原始指针,期望的类型是一个智能指针,可以从它应该找到它的内置指针隐式转换。
  2. 对于值类型,将忽略constness。对于引用或指针类型,非const指针或引用可以转换为相应的非const版本。然而,推导出的tupe将没有cv限定符,尽管可以使用cv-qualifird类型显式地实例化相同的函数。你推断ab T&&适用不同的规则。
  3. 临时只能绑定到const限定的左值引用和右值引用。这在语言中是普遍的。
  4. 这是什么比较?