【发布时间】:2018-06-07 07:42:40
【问题描述】:
来自 C++17 标准(草案),18.3.1:
[...] 异常声明不应表示指向不完整类型的指针或引用 [...]
reference 不允许捕获不完整类型的原因是什么?
如果函数参数是通过引用传递的,那么只有在函数实际访问接收到的对象时才需要完整的类型,但它可以很高兴地将参数传递给另一个函数,而无需了解类型。
我不明白为什么这应该与异常不同 - 异常数据本身可能驻留在适当的任何地方,并且在我们找到引用的(展开到处理程序的)堆栈上。美好的。如果处理程序现在可以仅从异常类型中拖动足够的信息,为什么需要了解完整的定义?
那么我错过了什么?
【问题讨论】:
标签: c++ exception-handling language-lawyer