c++ - 在编译时评估 strlen?

标签 c++ language-lawyer constexpr

如果我的代码有这个 constexpr 字符串

constexpr char my_str[] = "hello";

my_str 的类型包含有关其大小的信息,即 sizeof(my_str) 是常量 6,可以在需要常量的任何地方使用。

strlen(my_str) 呢?是否也可以/应该将其计算为编译时常量?

这里是一个例子:https://ideone.com/2U65bN

这是一个例子:http://coliru.stacked-crooked.com/a/8cb094776dfc5969

标准对此有何规定?肯定不是“也许”?

最佳答案

在 C++17 中你可以使用 std::char_traits::length ,这是 constexpr,而不是 strlen

关于c++ - 在编译时评估 strlen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56244988/

相关文章:

c++:为什么 'this' 不能是 nullptr?

c++ - 完美转发常量参数以进行持续评估

C++ 使用对正在定义的变量的引用

c++ - 在基本 ctor-initialiser 中将其强制转换为 `Derived*` 是否合法?

c++ - 用另一个 constexpr 数组支撑成员数组的初始化

c++ - 从 matlab 调用类时出现段错误

c++ - 接口(interface),绝对就是纯虚函数,或者...?

c - 在无法到达的路径上具有未定义行为的程序的行为是否已定义?

c++ - constexpr 静态成员什么时候不再是 constexpr?

c++ - 如何从 constexpr char* 构建更大的 std::array