Я понимаю, что в целом существует существенная разница в передаче по значению и ссылке, особенно для нетривиальных типов, и что в основном это то, копируется ли объект или нет, а некоторые оговорки, когда у нас есть rvalue.Передача вектора по постоянному значению vs по постоянной ссылке
Однако мне интересно, признает ли компилятор, что эти две вещи в какой-то степени идентичны, когда переданный аргумент является постоянным, и автоматически оптимизирует пропуск по значению для передачи по ссылке? Если нет, то я предполагаю, что стандартно делать аргументы, переданные по ссылке почти всегда, не так ли?
Я предполагаю, что, когда все аргументы постоянны, это будет так. –
Да. Но это все равно должно доказать, что, например, копирование строки не имеет побочных эффектов. Поскольку 'std :: string' предоставляется поставщиком компилятора, это вполне возможно, но я не знаю, было ли это сделано или нет. –
Да, вы можете быть там. В моем случае я имею дело с векторами, но так или иначе это было хорошо знать. –