Так я спросил this question, и я возился с его решением через static_cast
. (Кстати это не решает проблему, я просто не уверен, если я понимаю, почему.)Что делает static_cast <T> делать с T &?
В коде:
vector<int> foo = {0, 42, 0, 42, 0, 42};
replace(begin(foo), end(foo), static_cast<int>(foo.front()), 13);
ли static_cast
просто построения R-Value int
? В чем разница между этим и только призыв:
replace(begin(foo), end(foo), int{foo.front()}, 13);
EDIT:
Как судить по ответам static_cast
делает кажется, построить R-Value int
: http://ideone.com/dVPIhD
Но это код не Работа над Visual Studio 2015. Является ли это ошибкой компилятора? Проверьте здесь: http://webcompiler.cloudapp.net/
Я не котировка какой-либо стандарт, чтобы поддержать меня, но я думаю, что вы можете использовать '+ foo.front()', чтобы получить копию значения, а не ссылки на символ – KABoissonneault