cppcheck выдает предупреждение на const std :: string []

Я борюсь с предупреждением, что cppcheck (версия 1.85 на машине с Linux) сообщает:

someFile.h: 23: 29: предупреждение: избыточный код: найден оператор, который начинается со строковой константы. [ConstStatement]
const std :: string OffOn [] = {"off", "on"};
^

Я провел некоторое исследование и обнаружил, что изменение утверждения на

const std::string OffOn[]= {std::string("off"), std::string("on")};

удаляет предупреждение Однако я не понимаю, что происходит, и что "плохого" в моем первом решении. Может быть, кто-то может мне это объяснить? Или дай мне несколько советов!

Ответ 1

Рекомендуется использовать инициализацию со braced-init-list const std::string OffOn[]{"off", "on"}; например: const std::string OffOn[]{"off", "on"}; так = просто не нужно.