【发布时间】:2017-01-07 02:07:34
【问题描述】:
参考:Effective Modern C++ Item 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 &
我很难理解为什么param 是上面定义的f(const T& param) 的给定类型。
这是我的理解,
T = class Widget const *
所以f(const T& param) 变成了以下内容:
f(const const Widget * & param).
为什么param的真正类型是Widget const * const &?
【问题讨论】:
-
T = class Widget const *param = class Widget const *在 Visual Studio 2017 RC 上
标签: c++ c++11 templates constants auto