0

some_typeメンバー関数を指定すると、次のように の署名fを決定できfます (タプルに配置するとします):

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>;

過負荷の場合、これは明らかにひどく失敗しますff内のすべての既存のオーバーロードのシグネチャを特定することは可能some_typeですか?

4

1 に答える 1

0

特定の関数の型をコンパイラに「問い合わせる」ことができます。

しかし、C++ にはリフレクションがありません。クラスに存在する関数や、同じ関数のオーバーロードでさえクエリできません。

于 2013-02-01T15:43:06.213 に答える