【发布时间】:2015-11-07 20:33:00
【问题描述】:
我想以明确的方式做这样的事情:
struct S
{
static some_integral_type f() noexcept
{
return some_cast<...>(&f);
}
};
整数可以有符号或无符号。结果应该与指向uintptr_t 或intptr_t 的对象指针的转换相同。对于函数指针,不能保证对这些进行 AFAIK 强制转换。就我所知,即使转换为 uintmax_t 和 intmax_t 也可能不起作用。
我需要这个,所以我可以从函数指针生成一个唯一的“句柄”,然后我可以在 switch 语句中使用它。
【问题讨论】:
-
结果整数应该是什么?内存地址?
-
听起来像是 XY 问题。想要真正实现什么?
-
如果你真的必须这样做,至少使用
(u)intptr_t以避免任何数据丢失。 -
@zenith 是的,但是函数和成员函数指针不是对象指针。
-
那个答案是错误的和无关紧要的。