0

给定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如果超载,这显然会失败。是否可以确定fwithin的所有现有重载的签名some_type

4

1 回答 1

0

您可以向编译器“询问”特定函数的类型。

但是在 C++ 中没有反射,你不能查询一个类中存在哪些函数,甚至是同一个函数的重载。

于 2013-02-01T15:43:06.213 回答