相关疑难解决方法(0)

static_cast可以在C++中抛出异常吗?

假设static_cast永远不会抛出异常是否安全?

对于Enum强制转换的int,即使它无效,也不会抛出异常.我可以依靠这种行为吗?以下代码有效.

enum animal {
  CAT = 1,
  DOG = 2
};

int y = 10;
animal x = static_cast<animal>(y);
Run Code Online (Sandbox Code Playgroud)

c++ casting

10
推荐指数
3
解决办法
1万
查看次数

是 enum E { a } e = E(2); 有效的?

最近提出一个有趣的 C 语言律师问题:

此问答针对 C++ (*)的类似情况提出了相同的问题:这些是否有效?

enum EA { a } ea = EA(2);               // #1
enum EB { b } eb = static_cast<EB>(2);  // #2
Run Code Online (Sandbox Code Playgroud)

我已经注意到,该变体在编译时被拒绝(“无法用‘ ’类型的右值初始化‘ ’类型的enum EC { c } ec = EC{2};值),而和被接受,排除格式错误但不排除格式错误的 NDR 和 UB对于和。Eint#1#2#1#2


(*) 在被提示对最初的 C 语言律师问题给出过于热切和错误的以 C++ 为中心的答案后,在此发布为自我回答的问答。

c++ enums language-lawyer

6
推荐指数
1
解决办法
150
查看次数

标签 统计

c++ ×2

casting ×1

enums ×1

language-lawyer ×1