我们如何为std::reference_wrapper
包裹的项目分配值?
int a[] = {0, 1, 2, 3, 4};
std::vector <std::reference_wrapper<int>> v(a, a+5);
v[0] = 1234; // Error, can not assign value !
根据错误,直接分配将被删除:
错误:使用已删除的功能 'std :: reference_wrapper&lt; _Tp&gt; :: reference_wrapper(_Tp&amp;&amp;)[with _Tp = INT]'
答案 0 :(得分:12)
使用get()
成员函数:
v[0].get() = 1111; // ok
Here是std::reference_wrapper
所有成员函数的列表。由于 是operator=
:
reference_wrapper& operator=( const reference_wrapper<T>& other );
将int literal转换为引用包装器,该包装器失败,并且是您看到的错误消息。
或者,您可以明确调用转化运算符(static_cast<int&>(v[0]) = 1111;
),但最好使用上面显示的get()
方法。