C++小技巧 — 自动获取函数签名或函数地址
背景
有些时候我们想要获取一个函数的类型以声明函数指针,但 decltype 在纯 C 风格的接口不太适用,尤其是对于类的成员函数,因此本文将给出如何获取函数类型签名的方法
对于重载的函数,我们在手动声明签名的情况下,可以通过如下方法获取该成员函数的地址
对于普通函数
// for function
template <typename>
struct FooTraits;
template <typename R, typename... A>
struct FooTraits<R(A...)> {
using TYPE = R (*)(A...);
};
// 使用方式:
FooTraits<decltype(func