Jak możemy przypisać wartość do elementu zapakowanego przez std::reference_wrapper
?Przypisywanie wartości do 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 !
Accoring błędu, bezpośrednie przypisanie zostanie usunięty:
error: use of deleted function 'std::reference_wrapper<_Tp>::reference_wrapper(_Tp&&) [with _Tp = int]'
Zastanawiasz się, jaki jest pożytek operatora konwersji, jeśli nie można go użyć w ten sposób? Znajduję 'static_cast (v [0]) = 1111;' trochę głupie, gdy 'get()' jest. –
chris
Może dodać, że nie jawny konstruktor 'std :: reference_wrapper' jest tutaj ważny, np. 'boost :: reference_wrapper' nie ma. – inf
@chris, możesz przekazać 'reference_wrapper' do funkcji przyjmującej 'T &' (możesz też nazwać 'get()', jak sądzę, ale byłoby to po prostu bardziej szczegółowe). –