C ++ - Vorlage auf Anwesenheit / Abwesenheit eines Klassenmitglieds spezialisieren?

8

Betrachten Sie Folgendes:

%Vor%

Ich möchte C so spezialisieren, dass C & lt; A & gt; bekommt eine Spezialisierung und C & lt; B & gt; bekommt das andere, basierend auf der Anwesenheit oder Abwesenheit des Typenamens T :: foo. Ist das möglich mit Typ-Traits oder einer anderen Template-Magie?

Das Problem ist, dass alles, was ich versucht habe, einen Kompilierfehler erzeugt, wenn C & lt; B & gt; weil B :: foo nicht existiert. Aber das möchte ich testen!

Bearbeiten: Ich denke, ildjarns Antwort ist besser, aber ich habe schließlich die folgende C ++ 11-Lösung entwickelt. Der Mensch ist es hacky, aber zumindest ist es kurz. :)

%Vor%     
drwowe 27.04.2012, 16:53
quelle

2 Antworten

6

Ein anderer (C ++ 03) Ansatz:

%Vor%     
ildjarn 27.04.2012, 17:05
quelle
2

So etwas könnte helfen: has_member .

%Vor%     
Diego Sevilla 27.04.2012 16:58
quelle