原文地址

取函数地址:

空 福(){}<型名 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);
}

这样,就可保存地址了.