Здравствуйте, SaZ, Вы писали:
SaZ>Visual Studio + ReSharper, CLion, из тулзов — clang tidy имеет соответствующие диагностики.
эх, решарпер давно не юзал. Надо попробовать. Правда беглый обзор обвинил, что он предлагает писать
return std::move(res) что ломает NRVO. Спишем на козни конкурентов.
SaZ>И да, конкретно в вашем примере изменения перформанса не будет что с мувом что без, потому что под капотом там используется QSharedData (имплементация COW)
А тут COW ни при чём.
line.trimmed()
создаёт новую строку и не изменяет старую.
std::move(line).trimmed()
переиспользует память line и новая строка не создаётся. Ну конечно гипотетическим можно представить, что line может быть к этому времени уже с кем-то пошарена и тогда действительно вызовется detach. Но это уже из мира фантазии.
Да и похоже в Qt идёт общая тенденция по отказу от COW. Так что рассчитывать на эту оптимизацию я бы не стал.