参考:《Effective Modern C++》第4条。
这段内容讲述了如何查看使用类型推导后的类型。建议阅读参考文献以获得更多信息。class Widget {};
template<typename T> // template function to
void f(const T& param) // be called
{
}
std::vector<Widget> createVec() // factory function
{
std::vector<Widget> vw;
Widget w;
vw.push_back(w);
return vw;
}
int main()
{
const auto vw = createVec(); // init vw w/factory return
if (!vw.empty()) {
f(&vw[0]); // call f
// ...
}
}
根据该书,T
和param
的类型分别如下:
T = class Widget const *
param = class Widget const * const &
我有困难理解为什么上面定义的 f(const T& param)
中的 param
是给定类型。
这是我的理解,
T = class Widget const *
那么f(const T& param)
变成了以下内容:
f(const Widget * const & param)
.
为什么param
的实际类型是Widget const * const &
而不是其他类型呢?