gpt4 book ai didi

c++ - 为什么不支持连接 std::string 和 std::string_view?

转载 作者:太空宇宙 更新时间:2023-11-04 12:53:13 25 4
gpt4 key购买 nike

从 C++17 开始,我们有 std::string_view ,一种对连续字符序列的轻量级 View ,可避免不必要的数据复制。现在通常建议使用 std::string_view 而不是 const std::string& 参数。

但是,很快就会发现从 const std::string& 切换到 std::string_view 会破坏使用字符串连接的代码,因为不支持连接 std::stringstd::string_view:

std::string{"abc"} + std::string_view{"def"}; // ill-formed (fails to compile)
std::string_view{"abc"} + std::string{"def"}; // ill-formed (fails to compile)

为什么标准中不支持连接 std::stringstd::string_view

最佳答案

原因在 n3512 string_ref: a non-owning reference to a string, revision 2 中给出。作者:杰弗里亚斯金:

I also omitted operator+(basic_string, basic_string_ref) because LLVM returns a lightweight object from this overload and only performs the concatenation lazily. If we define this overload, we'll have a hard time introducing that lightweight concatenation later.

后来有人在 std-proposals 上提出建议邮件列表将这些运算符重载添加到标准中。

关于c++ - 为什么不支持连接 std::string 和 std::string_view?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47927920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com