将函数指针转换为noexcept指定的函数指针

用户名

说我有这些声明:

using fp_type = void(*)();
using fp2_type = void(*)() noexcept;

void func(){}
fp_type fp(func);

演员表fp2_type(fp)格式是否正确另一种方法(将noexcept指定的函数指针投射到没有noexcept说明符的函数指针中)?

TC

这是C ++ 14及更早版本的格式错误:

using fp2_type = void(*)() noexcept;

由于N4140 [spec.spec] / 2:

一个异常规范,不得出现在typedef声明或别名声明

因此,我将假设问题出在C ++ 1z,其中异常规范是类型系统的一部分。


[conv.fctptr] / 1

noexcept可以将函数指针”的prvalue转换为“函数指针”的prvalue。结果是指向该函数的指针。

因此,void (*)() noexcept可以(隐式)转换为void (*)()

[expr.static.cast] / 7

可以使用显式执行不包含[[(省略其他各种情况)]]函数指针([conv.fctptr])转换的任何标准转换序列(Clause [conv])的逆运算static_cast

[expr.static.cast]中的任何其他内容都不允许转换void (*)()void (*)() noexcept任何一个,因此这不是可以由进行的转换static_cast

[expr.reinterpret.cast] / 6

函数指针可以显式转换为其他类型的函数指针。通过指向与函数定义中使用的类型不同的函数类型([dcl.fct])的指针调用函数的效果是不确定的。除了将“ pointer to T1类型的prvalue转换为“ pointer to ”类型T2(其中T1T2是函数类型)并返回其原始类型会产生原始指针值外,这种指针转换的结果未指定。[注意:有关指针转换的更多详细信息,另请参见[conv.ptr]。—尾注]

因此reinterpret_cast可以执行此转换。

因为fp2_type(fp)等效于C风格的强制转换(fp2_type) fp[expr.type.conv] / 1),并且由于C风格的强制转换无法实现reinterpret_castwhenstatic_cast(忽略const_cast简单性,因为此处不相关),fp2_type(fp)所以格式正确reinterpret_cast但是,这种转换的结果只能用于将其回退。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

将转发lambda转换为函数指针

来自分类Dev

将Shellcode转换为函数指针

来自分类Dev

您可以将“函数指针指向指针”转换为void *

来自分类Dev

如何将void指针强制转换为函数指针

来自分类Dev

如何合法地将函数指针转换为方法指针?

来自分类Dev

将函数转换为通用 void 指针作为函数参数

来自分类Dev

为什么将指向int的指针转换为void *但将指向函数的指针转换为bool?

来自分类Dev

从函数隐式转换为函数指针?

来自分类Dev

将返回对象指针的函数强制转换为返回空指针的函数合法吗?

来自分类Dev

C ++-17:将函数指针转换为具有不同参数指针类型的函数

来自分类Dev

将Lambda表达式转换为函数指针

来自分类Dev

可以在函数调用期间将指针转换为数组吗?

来自分类Dev

使用函数将抽象类从对象转换为指针

来自分类Dev

函数指针将参数强制转换为 void

来自分类Dev

将函数指针类型转换为对应的字符串

来自分类Dev

将非空返回类型的Lambda转换为函数指针

来自分类Dev

是否将LONG强制转换为函数指针?

来自分类Dev

将C泛型参数转换为函数指针

来自分类Dev

如何创建noexcept函数指针?

来自分类Dev

将*指针转换为***指针

来自分类Dev

是否可以将struct指针转换为c中的函数指针?

来自分类Dev

将指针转换为不同的指针会导致调用错误的虚函数

来自分类Dev

将指针转换为指针...指向指针?

来自分类Dev

将函数指针强制转换为C中的另一个函数指针是否安全?

来自分类Dev

转换函数指针

来自分类Dev

函数指针转换

来自分类Dev

类型转换函数指针

来自分类Dev

限制函数指针的转换

Related 相关文章

热门标签

归档