Тема строк в SO-документации, которая говорила в разделе "Примечания":
Так как С++ 14 вместо
"foo"
рекомендуется использовать"foo"s
, посколькуs
является строковым литералом, который преобразуетconst char *
"foo"
вstd::string
"foo"
.
Единственное преимущество, которое я вижу при использовании
std::string str = "foo"s;
вместо
std::string str = "foo";
заключается в том, что в первом случае компилятор может выполнить copy-elision (я думаю), который будет быстрее, чем вызов конструктора во втором случае.
Тем не менее, это (еще не) гарантировано, поэтому первый может также вызвать конструктор, конструктор копирования.
Игнорирование случаев, когда требуется использовать литералы std::string
, такие как
std::string str = "Hello "s + "World!"s;
Есть ли какая-либо польза от использования std::string
литералов вместо const char[]
литералов?