Spezialisiert statisches consExpr-Datenelement

8

Ich habe eine Klasse, um einige Eigenschaften eines Typs zu beschreiben.

%Vor%

Ich möchte my_traits::some_trait spezialisieren, aber wenn ich es versuche:

%Vor%

Der Compiler beschwert sich, dass my_traits::some_trait bereits einen Initialisierer hat. Natürlich kann ich es spezialisieren, indem ich mache:

%Vor%

aber dann muss ich alle anderen Funktionen neu definieren, auch wenn sie genau gleich sind.

Wie kann ich my_traits<int>::some_trait spezialisieren, ohne min und max ?

wiederholen zu müssen?     
maddisoj 13.03.2016, 17:57
quelle

1 Antwort

5

Es gibt mehrere Möglichkeiten, dies zu tun. @Piotr Skotnicki und @Niall erwähnten das Initialisieren durch einen Helfer, der spezialisiert werden kann. Im Allgemeinen, restrukturieren Sie einfach Ihren Code, so dass Sie einige Klassen oder Funktionen spezialisieren können, und verwenden Sie dann (durch Zusammensetzung oder Vererbung) die Spezialisierungsteile nach Teilen, die Sie nicht spezialisieren müssen.

Als Beispiel für eine Alternative zu den Kommentaren gibt es hier eine spezialisierte Basis:

%Vor%

Jetzt können Sie es einfach in einen gemeinsamen Teil unterteilen:

%Vor%

Das Folgende zeigt, dass es verwendet wird (es gibt 0 und 1 aus)

%Vor%     
Ami Tavory 13.03.2016, 18:33
quelle