gpt4 book ai didi

c++ - 从 const std::string& 移动到 std::string_view 时的向后兼容性考虑?

转载 作者:行者123 更新时间:2023-12-01 13:06:46 25 4
gpt4 key购买 nike

我维护一个经常使用的 C++ 库 const std::string&其 API 中的参数。但是,我收到了一些用户要求切换到 std::string_view 的请求。帮助实现当前 API 无法实现的效率。

我正在考虑简单地替换 const std::string& 的所有实例与 std::string_view 的参数(可能通过功能检查来验证 std::string_view 是否可用)。这会破坏我的任何用户的向后兼容性吗?我尝试了简单的替换,它似乎没有破坏我的代码或测试中的任何内容,但这当然不是一个详尽的检查。

我确实意识到这会破坏一些依赖于我的库的确切函数签名的代码。为简单起见,假设我不允许用户依赖我的函数的确切类型签名/参数。

最佳答案

我试图更换 std::string const&std::string_view在我自己的代码中多次出现,以下之一总是让我绊倒:

  • std::string_view从不拥有,所以如果您的 std::string基于生命周期的原因,基于代码必须拥有字符缓冲区,该部分代码不能转换为使用 std::string_view .这些问题可能很微妙,所以应该小心。
  • 基于第一点,任何需要所有权的代码/std::string使用意味着在完全使用时可能获得的效率提升 std::string_view可能无法完全实现。
  • 如果您依赖以空字符结尾的字符串,那么 std::string_view不是一个好的候选人。密切注意可能需要的任何功能 char const*参数,其中隐含假设字符缓冲区以 '\0' 结尾.

  • 如果您可以保证满足上述所有条件,那么您可能会很高兴使用 std::stringstd::string_view移民。

    关于c++ - 从 const std::string& 移动到 std::string_view 时的向后兼容性考虑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60049303/

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