вопрос по functors c++
WAT
почему при передаче функторов другой функции они передаются по значению, а не по ссылке?применительно к c++
почему при передаче функторов другой функции они передаются по ссылке, а не по значению?
почему при передаче функторов другой функции они передаются по значению, а не по указателю?
почему при передаче функторов другой функции они передаются по указателю, а не по ссылке?
почему при передаче функторов другой функции они передаются по ссылке и получается Access Violation?
почему при передаче функторов другой функции они передаются по ссылке и получается ошибка типа cannot convert?
короче код покажи, с c++ телепатия плохо работает
Каких-то явных преимуществ ИМХО в этом подходе нет, просто так принято.
Каких-то явных преимуществ ИМХО в этом подходе нетну типа за временем жизни следить не приходится.
тс хотел узнать, почему в C++, во всяком случае в стандартной библиотеке C++, принято передавать функторы по значениюможно пойти в гугл и найти ответы поинтереснее:
http://stackoverflow.com/questions/8196345/passing-functor-o...
http://stackoverflow.com/questions/17626667/why-function-obj...
Вот аргумент, про то что при передаче обычной функции по константной ссылке в С++03 происходила ошибка компиляции, имеет право на жизнь.
Каких-то явных преимуществ ИМХО в этом подходе нет, просто так принято.Вероятно, считают странным передавать по ссылке указатель на функцию.
std::function состоит, в основном, из указателя, тоже быстрая вещь.
И полагают, что кто делает класс с operator и копированием на полчаса, тот сам себе любопытная достопримечательность.
Вот аргумент, про то что при передаче обычной функции по константной ссылке в С++03 происходила ошибка компиляции, имеет право на жизнь.А, ну да, уже сказали.
Конешно есть. Если написать прототипы с передачей по ссылке, то передавать можно будет только по ссылке. А если написать прототипы с передачей по значению, то можно сделать враппер-структурку с полем-ссылкой-на-функтор, и её передача по значению будет работать как передача оригинального функтора по ссылке. В итоге с такими прототипами получаются выразимы обе семантики передачи.
А кто мешает в месте вызова создать временный объект-копию и передать ее по ссылке? Ее передача по ссылке будет работать, как передача оригинала по значению.
если передавать по ссылке, то ленивые вызовы делать нельзя, потому что функтор уже может быть разрушен.
А кто мешает в месте вызова создать временный объект-копию и передать ее по ссылке? Ее передача по ссылке будет работать, как передача оригинала по значению.я же написал: время жизни. Если этот функтор захотят сохранить до лучших времен, то возникнут вопросы.
Оставить комментарий
xoki87
почему при передаче функторов другой функции они передаются по значению, а не по ссылке?