可以 std::字符串小号; 在任何情况下抛出?这个是标准规定的吗(对C++03感兴趣,以防有差异)?
最佳答案
在 C++11 中,默认构造函数实际上采用一个(默认)参数,即分配器 (21.4.2):
explicit basic_string(const Allocator& a = Allocator());
此构造函数未声明为 noexcept
。 (我想这会要求分配器有一个不抛出的复制构造函数。)正如 Jonathan 和 Bo 指出的那样,分配器的复制构造函数不能抛出任何异常,但允许字符串的构造函数执行抛出操作(例如分配一 block 初始内存)。编写类似字符串的类作为不抛出的 constexpr
构造函数当然是可能的,但标准库字符串并未指定为这样。
关于c++ - std::string 的默认构造函数是 no-throw 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14421193/