Warum kann ich einen Typ-Member einer Klasse nicht als Template-Parameter übergeben?

8

Ich kann einen Typ-Member einer Klasse nicht als Template-Parameter übergeben. Zum Beispiel im folgenden Stück Code:

%Vor%

wird nicht kompiliert.

Was ist der Grund dafür? Gibt es eine Problemumgehung?

    
xiver77 02.07.2015, 09:23
quelle

2 Antworten

23

a ist kein Typ, daher können Sie :: nicht darauf anwenden. Sie können decltype verwenden, um den Typ a abzurufen:

%Vor%     
Quentin 02.07.2015, 09:27
quelle
1

Quentin hat dir einen Weg gegeben, dies zu umgehen. Hier sind zwei mehr.

Die offensichtliche Lösung besteht natürlich darin, den Namen des Objekts a durch den Namen seines Typs zu ersetzen:

%Vor%

Beim Betrachten Ihres Codes habe ich mich jedoch gefragt, ob Sie lieber Typen als Objekte definieren sollten. Ich denke, a und a2 machen außergewöhnlich schlechte Typnamen (also mein Verdacht war wahrscheinlich falsch), aber hier gehst du:

%Vor%

Sie können jetzt Instanzen dieser Typen erstellen.

    
sbi 06.07.2015 05:22
quelle

Tags und Links