c++ - 为什么 std::string::max_size 不是编译时常量?

标签 c++ string compile-time-constant

std::string 提供了一个 max_size() 方法来确定它可以包含的最大元素数。

然而,一般来说,要计算出字符串的最大长度,程序员必须创建一个(可能为空的)字符串对象。

如果这个类不需要程序员提供任何信息,为什么 max_size() 不能作为编译时常量使用?字符串计算其最大大小是否需要某种运行时信息?

最佳答案

一个原因是 max_size 函数根本不是很有用,委员会认为尝试修复它不值得。所以它就保持原样,因为它是文档化界面的一部分。

参见库缺陷报告 #197:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3440.html#197

max_size() isn't useful for very many things, and the existing wording is sufficiently clear for the few cases that max_size() can be used for. None of the attempts to change the existing wording were an improvement.

关于c++ - 为什么 std::string::max_size 不是编译时常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13137766/

相关文章:

c - 如何进行不区分大小写的字符串比较?

基于每个文件的 C# 编译器常量?

c++ - 结构减去填充的编译时大小

c++ - 链接 mysqlpp_d.lib 的多个问题

java - 我将如何在 Java 中拆分一个句子

c++ - 为什么我们使用指针而不是简单地创建特定大小的数组?

c# - Double.Parse 在转换小数点后 8 位字符串时丢失精度

c++ - C++11 之前的 "Constant expressions"

c++ - 由围绕矩形顺时针方向移动的数字组成的图案(长度和宽度每次都减小)

c++ - 文字字符串有效但字符串不在 file.open()