Nachdem sich herausgestellt hat, dass das, was ich ursprünglich wollte, wahrscheinlich nicht ohne C++ 11 möglich ist, möchte ich die Anforderung leicht ändern und frage, ob dies erreicht werden kann .Kompilierzeit prüfen, ob eine Basisklasse "interface" ist
Grundsätzlich möchte ich in der Kompilierung überprüfen, ob eine Klasse von „Schnittstelle“ erbt. Mit Schnittstelle meine ich Klasse nur mit rein virtuellen Methoden. Ich möchte den folgenden Code tun:
template <typename T>
class Impl : public T {
public:
STATIC_ASSERT_INTERFACE(T);
};
Das Verhalten hier ist, wenn T nur rein virtuelle Methoden hat, dann wird es kompilieren und wenn eine seiner Methoden wird nicht scheitern dann.
Kann jemand an so etwas denken?
Wirklich alle Methoden rein virtuell? Sogar der Destruktor? – Andrzej
Vermutlich würden Sie prüfen wollen, ob 'T' auch Basisklassen hat und, wenn ja, ob es sich um" Interfaces "handelt. Aber die Antwort ist in der Tat "Nein". – MSalters