std::string 可以体现在常量表达式中吗?
在 C 11 中,在常量表达式中使用 std::string 构成挑战。然而,C 20 提供了一个解决方案,但需要注意的是,在常量求值结束之前必须破坏 std::string。
C 20 解决方案:
虽然您提供的代码片段将无法编译,以下代码将:
constexpr std::size_t n = std::string("hello, world").size();
C 17 替代方案:string_view
作为替代方案,C 17 引入了 string_view,一个轻量级的类似字符串的对象,用作对 char 对象序列的非拥有引用。与 std::string 不同,string_view 是不可变的,不需要销毁。这使得它非常适合在常量表达式中使用:
constexpr std::string_view sv = "hello, world";
以上是std::string 可以在 C 中的常量表达式中使用吗?的详细内容。更多信息请关注PHP中文网其他相关文章!