标准对异常中抛出的类型有什么要求?
What requirements does the standard place upon a type thrown in an exception?
我认为异常对抛出类型施加的影响比标准实际施加的要大一些。我想澄清这个困惑。这些人到底被强加了什么?
c++ ISO规范& section;15.1/3声明
throw表达式的类型不能是an不完整类型,或指向不完整类型的指针或引用,但不包括void*、const void*、volatile void*或const volatile void*。除了这些限制和15.3中提到的类型匹配限制外,throw的操作数完全被视为调用(5.2.2)中的函数实参或返回语句的操作数。
从这里看来,你应该能够抛出任何你想抛出的类型,只要你不抛出一个你只向前声明过的类型。
EDIT:正如@Billy ONeal指出的,类型必须是可复制的,这意味着它应该支持复制构造函数。
相关文章:
- 静态自动 constexpr t = { "red" , "black" , "green" } 是什么类型;派生到?
- 这是什么类型的C++语法,我应该采取什么步骤来理解这一点
- 当你只使用 return 时,函数返回什么类型;在 c++ 中
- 这在C++是什么类型的错误?
- 如果在 C++ 构造函数中以错误的顺序初始化对象数据,会发生什么类型的错误
- 重载运算符返回什么类型的值(对于用户定义的类型):右值还是左值?
- int(int)& 或 int(int) const &是什么类型?
- 它>首先给出什么类型?
- ``n = 1u;'有什么类型
- 访问和存储/解析性std :: Chrono ::持续时间:: milliseconds(cpprest)时使用什么类型
- 二进制要找到什么类型的序列化
- 我如何找出3D容器的元素是什么类型
- C++ - 函数中的局部指针变量具有什么类型的存储持续时间以及它们存储在哪里?
- 将 lambda 作为模板参数传递:实际推导出什么类型
- 在 c 和 c++ 中,二维数组的元素是什么类型?
- 什么类型会使"std::has_unique_object_representations"返回 false?
- 这个 lambda 的参数是什么类型?
- 转换逻辑目标是什么类型
- 由值持有的成员的get函数应该具有什么类型
- C++中使用什么类型来定义数组大小