ich einen Typ geschaffen, die eine eindeutige Identität eines Verfahrens hältTyp-Inferenz für integrale Template-Parameter
template <typename Method, Method method>
struct identity {
};
Also ich Methoden in einer unverwechselbaren Art und Weise beschreiben können, auch wenn sie die gleiche Signatur haben
struct Class {
void foo() {}
void bar() {}
};
typedef identity<decltype(&Class::foo), &Class::foo> foo_identity;
typedef identity<decltype(&Class::bar), &Class::bar> bar_identity;
std::cout << std::boolalpha << std::is_same<foo_identity, bar_identity>::value << std::end;
// prints "false"
#define GEN_IDENTITY(NAME) identity<decltype(&NAME), &NAME>
GEN_IDENTITY(Class::foo)
:
da das Verfahren der Instanziierung der Identität zu ausführlich ist, da beide Namen zweimal verwendet werden, kann es mit verkürzt werden
Aber gibt es eine Möglichkeit, es ohne die Verwendung eines Makros abzuleiten? Oder gibt es eine andere Möglichkeit, einen Typ zu erhalten, der eine Methode eindeutig beschreibt?
Ok, danke für der Link zum Vorschlag Hoffentlich wird es irgendwann zum Standard hinzugefügt. – km216