C ++: Wie kann man verhindern, dass die Vorlage einen Zeiger spezialisieren soll?

7

Ich beginne mich zu entschuldigen, wenn ich dumm genug bin, um die Antwort nicht zu finden, wenn es so offensichtlich ist.

Ich habe Dutzende von Seiten gesehen, die davon sprachen, eine spezielle Template-Spezialisierung für pointer -Parameter zu haben.

Ich möchte allerdings verhindern können, dass eine Vorlage Zeigerparameter parametrisiert, aber ich kann nicht herausfinden, wie das geht.

%Vor%

Ist es möglich?

Danke.

    
j4x 16.02.2012, 13:45
quelle

3 Antworten

14

Sie können die Spezialisierung deklarieren (in diesem Fall ist es technisch nur eine Überladung), aber nicht definieren:)

%Vor%     
Armen Tsirunyan 16.02.2012, 13:47
quelle
7

In C ++ 11 können Sie static_assert auf folgende Weise verwenden:

%Vor%

Ein Beispiel finden Sie hier auf Ideone .

Ich empfehle das, weil es nützlichere Fehlermeldungen gibt, wenn jemand versucht, Ihre Funktion mit einem Zeiger aufzurufen (Linker-Fehler können in diesem Fall sehr verwirrend sein). Linker Fehler werden auch nicht angezeigt, bevor Verknüpfung auftritt.

    
user1203803 16.02.2012 14:03
quelle
6

Ich bin selbst ein Template-Metaprogrammierer, aber ich denke

%Vor%

sollte funktionieren, da diese Funktion nur für Nicht-Zeiger-Parameter existieren sollte. Natürlich erfordert dies C ++ 11 oder mindestens TR1 oder Boost's Traits.

    
Christian Rau 16.02.2012 13:51
quelle

Tags und Links