【发布时间】:2020-02-04 01:17:50
【问题描述】:
我维护一个 C++ 库,该库经常在其 API 中使用 const std::string& 参数。但是,我收到了一些用户请求切换到 std::string_view 以帮助实现当前 API 无法实现的效率。
我正在考虑用std::string_view 简单地替换所有const std::string& 参数实例(可能通过验证std::string_view 可用的功能检查)。这会破坏我的任何用户的向后兼容性吗?我尝试了简单的替换,它似乎没有破坏我的代码或测试中的任何内容,但这当然不是一个详尽的检查。
我确实意识到这会破坏一些依赖于我的库的确切函数签名的代码。为了简单起见,假设我不允许用户依赖于我的函数的确切类型签名/参数。
【问题讨论】:
-
您是否曾经依赖于您的参数当前是空终止的事实?
-
@Griwes 没有。不过很好。
-
只是指出:
std::string_view不允许从nullptr构造。 -
@Jovibor std::string 也没有?主要区别似乎是 std::string_view 在编译时失败,但 std::string 在运行时失败。我想如果人们在模板上玩太多花样,这可能会导致问题?
-
std::string_view在运行时失败。
标签: c++ backwards-compatibility string-view