История изменений
Исправление alysnix, (текущая версия) :
Оппонент, осознав свою неправоту, позорно слился.
ну почему. оппонент привел довольно удачный пример некоей обещанной эффективности(в частных случаях) в передаче по значению…только не обратил внимания на накладные расходы (по коду) которые немедля отягощают любой вызов подобной функции.
понятно, что копирование снаружи это некий п…ц. и допущен был такой п..ц только для того, чтобы сообщить бандам упоротых плюсовиков, что над мрачной долиной прежней «неэффективности» взошло солнце мувабл копирования.
я вот только укрепился во мнении, что ничто кроме скаляра передавать по значению в плюсах уже нельзя. если до мувабла, копирование наверняка делалось изнутри функции и все было чистенько, то теперь все стало грязьненко и это не стоит такого роста кода.
а почему копировать снаружи это пепец - очевидно.
-
рост кода, даже для одного параметра, и чем их больше, тем рост страшней.
-
надо еще посмотреть какие там будут копирования, если нет конструктора копии…может там будут какие-то лютые инлайны и код вырастет уже даже не вдвое, а втрое.
-
поскольку функция получает копию снаружи, а не делает ее сама, она уже это место оптимизировать не может. например, если параметр не используется - копию можно было и не делать. а если используется только на чтение - то воспринимать это все как конст ссылку и копию опять не делать… а по поводу «сайдэфекта» конструктора копии написать в стандарте аршинными буквами, что компилятор не обязан делать копию, если видит, что копия там не нужна. просто, понятно и логично. хотите программировать на сайдэффектах конструкторов копий - пишите на асме.
и главный убойный аргумент - передача по копии это явная зависимость интерфейса от реализации. что есть смертный грех и отлучение от церкви.
Исходная версия alysnix, :
Оппонент, осознав свою неправоту, позорно слился.
ну почему. оппонент привел довольно удачный пример некоей обещанной эффективности(в частных случаях) в передаче по значению…только не обратил внимания на накладные расходы (по коду) которые немедля отягощают любой вызов подобной функции.
понятно, что это копирование снаружи это некий п…ц. и допущен был такой п..ц только для того, чтобы сообщить бандам упоротых плюсовиков, что над мрачной долиной прежней «неэффективности» взошло солнце мувабл копирования.
я вот только укрепился во мнении, что ничто кроме скаляра передавать по значению в плюсах уже нельзя. если до мувабла, копирование наверняка делалось изнутри функции и все было чистенько, то теперь все стало грязьненко и это не стоит такого роста кода.
а почему копировать снаружи это пепец - очевидно.
-
рост кода, даже для одного параметра, и чем их больше, тем рост страшней.
-
надо еще посмотреть какие там будут копирования, если нет конструктора копии…может там будут какие-то лютые инлайны и код вырастет уже даже не вдвое, а втрое.
-
поскольку функция получает копию снаружи, а не делает ее сама, она уже это место оптимизировать не может. например, если параметр не используется - копию можно было и не делать. а если используется только на чтение - то воспринимать это все как конст ссылку и копию опять не делать… а по поводу «сайдэфекта» конструктора копии написать в стандарте аршинными буквами, что компилятор не обязан делать копию, если видит, что копия там не нужна. просто, понятно и логично. хотите программировать на сайдэффектах конструкторов копий - пишите на асме.
и главный убойный аргумент - передача по копии это явная зависимость интерфейса от реализации. что есть смертный грех и отлучение от церкви.