相关疑难解决方法(0)

如何在C ++ 17中将强制转换的函数指针强制转换为noexcept?

C ++ 17 noexcept是函数类型的一部分。它还允许从noexcept函数指针到潜在地抛出函数指针的隐式转换。

void (*ptr_to_noexcept)() noexcept = nullptr;
void (*ptr_to_throwing)() = ptr_to_noexcept;  // implicit conversion
Run Code Online (Sandbox Code Playgroud)

http://eel.is/c++draft/expr.static.cast#7static_cast可以执行这种转换的逆过程。

void (*noexcept_again)() noexcept = static_cast<void(*)() noexcept>(ptr_to_throwing);
Run Code Online (Sandbox Code Playgroud)

不幸的是,GCC和clang都告诉我否则:https : //godbolt.org/z/TgrL7q

正确的方法是什么?是reinterpret_cast和C风格的投我唯一的选择吗?

c++ function-pointers static-cast noexcept c++17

13
推荐指数
1
解决办法
155
查看次数

当 noexcept 函数尝试调用 gcc 或 clang 中的非 noexcept 函数时启用警告

当标记为 的函数尝试调用noexcept未标记为 的函数时,GCC 或 Clang 中是否有一个标志会抛出编译时错误(或警告) noexcept

noexcept如果不是,那么当您从先前标记的 funciton 中删除时,您应该如何判断代码的哪些部分受到影响noexcept?难道根本就没有办法吗?

c++ g++ clang noexcept

5
推荐指数
1
解决办法
1045
查看次数

标签 统计

c++ ×2

noexcept ×2

c++17 ×1

clang ×1

function-pointers ×1

g++ ×1

static-cast ×1