取函数地址:
空 福(){}
元<型名 F>
空 打印地址(F f){
整64型 地址=(整64型)f;
输出<<地址<<"\n";
}
打印地址(福1);
但,对成员函数
则难了.说不能转换为整64型
.要用位转
(c++20
)来取成员函数地址
.
元<类 至,类 从>
型名 允许如型<
的大小(至)==的大小(从)&&
是可平凡复制值<从>&&
是可平凡复制值<至>,至>
//支持常式需要编译器
转换位(常 从&源)无异
{
静断(是可平凡构造值<至>,"该实现要求必须可平凡构造");
至 汇;
复制内存(&汇,&源,的大小(至));
中 汇;
}
不能把成员函数地址,转成整/空
,而应用位转
.
元<类 T,允许如型<!是成员指针值<T>,整>=0>
动 的地址(T&x)->推导(动)
{
中 的地址(x);
}
元<类 T,允许如型<是成员指针值<T>,整>=0>
动 的地址(T p)->T
{
中 p;
}
元<型名 F>
空 打印函数地址(F 常&f){
动 p=::的地址(f);
动 a=转换位<数组<符,的大小(p)>>(p);
动 s=串(a.数据(),a.大小());// 将它作为键
格式::打印("函数键:{}\n",s);
}
这样,就可保存地址
了.