【发布时间】:2018-07-29 05:46:21
【问题描述】:
我遇到了一些如下所示的 C++ 代码:
class exception {};
int main()
{
try {
throw exception();
} catch (exception()) {
// ...
}
}
注意catch (exception()) 中的额外括号。根据Compiler Explorer,它被编译为与使用catch (exception &) 编写的相同的目标代码。
在什么基础上允许额外的括号集?标准的哪一部分允许这样做?据我所知,catch 子句需要类型说明符,但 exception() 似乎不像类型说明符。
【问题讨论】:
-
在我看来就像一个函数声明。同样的原因
exception(int)有效。 -
看起来像是一个构造函数调用。
-
也试试
catch (int[5])。 -
@Ayush 你不能调用构造函数,尽管语法让你相信。
标签: c++ exception-handling try-catch