Ни.
Если вы хотите быть умным, сравните с "string"sv
, который возвращает std::string_view
.
Хотя сравнение с литералом, подобным "string"
, не приводит к каким-либо накладным расходам на выделение ресурсов, оно обрабатывается как строка с нулевым символом в конце, со всеми вытекающими из этого недостатками: нет допусков для встроенных нулей, и пользователи должны учитывать нулевой терминатор.
"string"s
выполняет распределение, исключая small-string-оптимизация или elision выделения . Кроме того, оператору передается длина литерала, счет не нужно, и он допускает встраивание нулей.
И, наконец, использование "string"sv
сочетает в себе преимущества обоих других подходов, избегая их индивидуальных недостатков. Кроме того, std::string_view
- намного более простой зверь, чем std::string
, особенно если последний использует SSO, как и все современные.
По крайней мере, начиная с C ++ 14 (который обычно разрешал выделение ресурсов), компиляторы могли бы теоретически оптимизировать все варианты до последнего, учитывая достаточную информацию (обычно доступную для примера) и усилия, под как если правило . Мы еще не там, хотя.