Was funktioniert mit der Funktion has_member nicht korrekt?

8

Ich probiere Beispiele aus Walter Browns TMP-Talk aus und versuche, seine% co_de zu bekommen % Implementierung funktioniert.

Die Implementierung scheint jedoch fälschlicherweise wieder wahr zu sein, was zu der Annahme führt, dass es einige Details von SFINAE gibt, die ich nicht verstehe.

%Vor%

Ausgabe ist:

%Vor%

Ich bin auf gcc 4.8.2 auf Ubuntu.

    
Nathan Doromal 11.06.2015, 12:59
quelle

1 Antwort

11

Das Problem ist, dass gcc 4.8.2 (und vor gcc 5.0) nicht verwendete Argumente in Alias-Vorlagen nicht als für SFINAE geeignet ansieht. Die Problemumgehung besteht darin, an eine voider -Klassenvorlage weiterzuleiten:

%Vor%

Von Ссылка Abschnitt 2.3:

  

Leider haben wir bei der Arbeit mit der   über sehr einfache Definition. Wir vermuten (weiterhin), dass dies an der CWG-Ausgabe 1558 liegt:   "Die Behandlung nicht verwendeter Argumente in einer Aliasvorlagen - Spezialisierung wird nicht von der   aktuelle Formulierung von 14.5.7 [temp.alias]. "

    
ecatmur 11.06.2015, 13:05
quelle