std::reference_wrapper
isn't default constructable. So I can't write any of:
std::vector<std::reference_wrapper<int>> vec(10);
std::array<std::reference_wrapper<int>, 3> arr;
However, and to my surprise, you can invoke the std::vector::reserve
member function of a vector of std::reference_wrapper
objects and effectively change its capacity.
std::vector<std::reference_wrapper<int>> vec;
vec.reserve(10);
How is this possible since std::reference_wrapper
has no default constructor?