标准对异常中抛出的类型有什么要求?

时间:2011-07-28 19:13:27

标签: c++ exception

I thought exceptions imposed a bit more on the thrown type than the standard actually imposes.我想澄清这种困惑。对这些类型实际施加了什么?

1 个答案:

答案 0 :(得分:4)

C ++ ISO规范§15.1/ 3声明

  

throw-expression的类型不应该是   不完整的类型,或指向不完整类型的指针或引用,而不是void *,const void *,volatile void *或const volatile void *。除了这些限制和15.3中提到的类型匹配的限制外,throw的操作数被完全视为调用(5.2.2)中的函数参数或return语句的操作数。

从这一点来看,你似乎应该能够抛出任何你想要的东西,只要你没有抛出你只是向前宣称的类型。

编辑:正如@Billy ONeal指出的那样,该类型必须是可复制的,这意味着它应该支持复制构造函数。