为什么捕获异常播放允许尾括号
Why does a catch exception-declaration allow trailing parentheses?
我遇到了一些看起来如下的C 代码:
class exception {};
int main()
{
try {
throw exception();
} catch (exception()) {
// ...
}
}
请注意catch (exception())
中的额外括号集。根据Compiler Explorer的说法,这与使用catch (exception &)
编写的对象代码一起编译为相同的对象代码。
允许额外的括号集,标准的哪一部分允许?据我所知,catch
子句需要类型的指定符,但是exception()
似乎不像类型的指定词。
异常处理程序声明与函数声明一样起作用,在该数组和函数类型参数中被调整为指示器。(也就是说,数组和函数不能被"以价值"扔或捕获。(具体来说,[除外] P2说:
类型"
T
的数组"或功能类型T
的处理程序已调整为类型为"指针到T
"。
所以catch (exception())
与catch (exception(*p)())
相同。
exception()
正在声明函数。per除外#nt:handler, exception-declaration 包含a 声明器。函数声明是一种声明器。很容易看到这一点,因为exception(int)
也可以正常工作。请注意, exception-declaration 恰好与A parameter-declaration 完全相同,因此它与在参数中声明函数完全相同。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- SFML纹理像播放器
- 将大括号括起来的初始值设定项列表作为结构返回
- 根据用户回答声明"Players"。用户选择玩家数量。播放器是结构体
- 如何收听Windows当前正在播放的声音?
- 在C++行尾写一个分号或多个分号是否会改变任何内容
- GStreamer在开始任何播放之前进行搜索
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 调用重载的"<大括号括起来的初始值设定项列表>"对于对来说就足够了是模棱两可的
- 如何使用libav编写.mov文件,如果文件未正确完成,则可以播放
- C++新手,想知道如何使用VS code 2019播放音频文件
- 在C++不适用于猜数字游戏的情况下再次播放选项
- 我怎样才能在行尾使用 cout<<"hello world";不使用 ;
- 为什么我会收到此错误?无法将 {lb, ub} 从<大括号括起来的初始值设定项列表>转换为 float(**)(float*, int)
- 如何在构建链接列表时调整头、尾指针
- 代码厨师问题伊什瓦拉(应许之地)
- 按列随机播放 2D 矢量
- 如何以编程方式将音频从任何录制设备路由到任何播放设备
- 使用 IMFSinkWriter 编码的视频的播放速度会根据宽度而变化
- 为什么捕获异常播放允许尾括号