在常量表达式中使用 std::string
通常不可能在常量表达式中使用 std::string。原因是 std::string 有一个不平凡的析构函数,使其使用与编译时解析常量表达式的要求不兼容。
C 20 解决方案
然而,C 20 引入了有限的例外。如果 std::string 在常量求值结束之前被销毁,则它可以在常量表达式中使用。例如:
constexpr std::size_t n = std::string("hello, world").size();
在这种情况下,std::string 在常量表达式中创建和销毁,因此它的使用是允许的。
替代解决方案 (C 17以及稍后)
在常量表达式中使用 std::string 的实用替代方案是 std::string_view。 string_view 是对字符序列的不可变的、非拥有的引用。它提供与 std::string 类似的功能,但没有析构函数,使其适合常量表达式:
constexpr std::string_view sv = "hello, world";
以上是std::string 可以用在 C 中的常量表达式中吗?的详细内容。更多信息请关注PHP中文网其他相关文章!