我从C++ 参考页面中遇到了这样的代码:
#include <algorithm>
#include <list>
#include <vector>
#include <functional>
int main()
{
std::list<int> l = {-4, -3, -2, -1, 0, 1, 2, 3, 4};
std::vector<std::reference_wrapper<int>> v(l.begin(), l.end());
return 0;
}
这是“示例”部分的一个片段。代码按预期编译和运行。但怎么可能呢?std::reference_wrapper<int>
不是默认可构造的。你怎么能把std::vector
这些东西弄得一团糟?我一直把它想象std::vector
成一个动态数组。但是你怎么能以这样的方式初始化操作系统新给你的一块内存呢?std::list
?
这听起来像是一个令人困惑的问题,但由于某种原因,我无法完全理解上面代码中发生的事情。里面发生了什么?