Как стать автором
Обновить

Комментарии 4

Passing the const-qualified object 'fileIndexerAudioPaths' to the 'std::move' function disables move semantics

Что-то сообщение какое-то приводящее в заблуждение. Ведь это не std::move отключает move-семантику, а сама константность объекта. Имхо было бы логичнее сказать, что std::move на const-qualified объекте не имеет эффекта

В этом сообщении мы хотели акцентировать внимание именно на том, что семантика перемещения в данном случае не сработает. Ваш вариант тоже неплох и мы рассматривали что-то похожее, когда думали над этим сообщением. Отмели мы его потому-что сообщение бы разраслось и только привело к новым вопросам. Ну не имеет смысла и не имеет, и что? Бывают ситуации, когда перемещение POD-объектов вот тоже смысла не имеет, поля всё равно копируются... Пришлось бы дописывать ещё что-нибудь, уже для других внимательных пользователей. В общем, формирование сообщений для анализатора - это своя отдельная специфика, ей занимаются сразу несколько человек (в случае, с этим сообщением - это 4 человека) и его основная цель кратко и лакончино обратить внимание на проблему. А для самых пытливых людей у диагностических правил есть целая страница-описание, которая уж точно никого в заблуждение не введёт.

акцентировать внимание именно на том, что семантика перемещения в данном случае не сработает

А получилось, что внимание акцентируется на "Вызов std::move отключает move-семантику", что в корне неверно и просто ложно.

В clang-tidy на этот счёт есть вполне вменяемое сообщение.

Clang-Tidy: Std::move of the const variable 'v' has no effect; remove std::move() or make the variable non-const

Clang-Tidy: Std::move of the variable 'v' of the trivially-copyable type 'Foo' has no effect; remove std::move()

Ого, кого-то так задело, что он прошёлся даже мне по карме

Зарегистрируйтесь на Хабре, чтобы оставить комментарий