enable_if Methodenspezialisierung

7
%Vor%

Wie kann ich enable_if verwenden, um die folgende Spezialisierung für jeden Fließkommatyp (is_floating_point) zuzulassen?

%Vor%

BEARBEITEN: Hier ist eine Antwort, die ich gefunden habe, die sich von den unten aufgeführten unterscheidet ...

%Vor%

Wie die folgenden Poster sagen, ist die Verwendung von enable_if möglicherweise nicht ideal für dieses Problem (es ist sehr schwer zu lesen)

    
David 08.07.2011, 16:43
quelle

2 Antworten

25

Verwenden Sie das Überladen anstelle der expliziten Spezialisierung, wenn Sie das Verhalten für einen spezifischeren Parametertyp verfeinern möchten. Es ist einfacher zu verwenden (weniger Überraschungen) und leistungsfähiger

%Vor%

Ein Beispiel, das SFINAE ( enable_if ) verwendet, wie Sie scheinen, neugierig zu sein

%Vor%

Viel hässlicher natürlich. Es gibt keinen Grund, enable_if hier zu verwenden, denke ich. Es ist Overkill.

    
Johannes Schaub - litb 08.07.2011, 16:52
quelle
2

Sie können auch einen booleschen Template-Standardparameter wie diesen verwenden:

%Vor%     
Paul Fultz II 16.08.2014 21:03
quelle