Ist es möglich, type_id (T) in C++ zu implementieren, die manuelle Typregistrierung noch RTTI nicht benötigen?Implementierung von type_id (T) in C++ ohne Typregistrierung oder RTTI
Alle Lösungen I (einschließlich boost :: typeindex) gesehen haben, sind auf Spezialisierung basiert und erfordern eine manuelle „Registrierung“ wie folgt aus:
class A {
public:
BOOST_TYPE_INDEX_REGISTER_CLASS
virtual ~A(){}
};
struct B: public A {
BOOST_TYPE_INDEX_REGISTER_CLASS
};
Aber ich wünschte, Typ-ID in der Lage sein zu bekommen für Beliebiger Typ einschließlich Bibliothekstypen, die ich in meinem Code nicht neu definieren kann.
Nicht sicher, wonach Sie fragen. ['typeid (T)'] (http://en.cppreference.com/w/cpp/language/typeid) benötigt RTTI nicht; Es ist zur Kompilierzeit aufgelöst. Nur 'typeid (Ausdruck) 'benötigt RTTI. – Oktalist
Ich möchte beliebige Typen ohne RTTI identifizieren. Außerdem möchte ich weder die zu identifizierenden Typen ändern noch manuelle Aktionen für jeden dieser Typen durchführen. –
Identifizieren auf welche Weise? Warum ist 'typeid' nicht ausreichend? – Oktalist