给定some_type
一个成员函数f
,可以f
像这样确定 's 的签名(比如说让我们把它放在一个元组中):
template <typename R, typename T, typename... A>
std::tuple<R, A...> signature_of_impl(R (T::*)(A...));
template <typename T>
using signature_of_member_f = decltype(signature_of_impl(&T::f));
struct some_type
{
int f(char, float);
};
using some_type_f_signature = signture_of_member_f<some_type>;
f
如果超载,这显然会失败。是否可以确定f
within的所有现有重载的签名some_type
?