c++ - std::string 的默认构造函数是 no-throw 吗?

标签 c++ stdstring c++03 default-constructor nothrow

可以 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/

相关文章:

c++ - C++ 新手,取消引用 vector 的一部分时程序没有响应?

c++ - 如何从 DWORD 构造 std::string?

C++ : nameable objects belonging to an instance of a class, 并存储在其中

exception - C++中抛出异常后应该如何释放内存?

c++ - 创建new object()时如何调用基类构造函数new base(argC argV)?

c++ - 定义子节点数量未知的树

c++ - 如何在 C++ 中打印 LPCTSTR 数组?

c++ - 注册类的不同实例如何分配不同的成员函数指针?

c++ - 返回 int 与 void

C++ 寻找 String.Replace()