Verknüpfen von Vorlagenparameterpaketen für ein unäres Argument

8

Obwohl std::add_pointer unär ist, wird der folgende Code sowohl von GCC 7.0.0 (20160608) als auch von Clang 3.9.0 akzeptiert:

%Vor%

Der folgende Code wird zwar von Clang akzeptiert, aber vom GCC abgelehnt:

%Vor%

Ist das C ++ gültig? Syntaktisch könnte ich mir vorstellen, dass das Komma ein Problem ist, wenn die Packungen leer sind, aber vermutlich ist es bei anderen Gelegenheiten verschwunden; Beispiel: std::common_type akzeptiert null oder mehr Argumente, und das Folgende stellt für beide Compiler kein Problem dar:

%Vor%     
user2023370 20.06.2016, 13:19
quelle

1 Antwort

1

Sie können diesen Code für eine beliebige Anzahl von Vorlagenargumenten verwenden tc3<1 or more>::a<zero or more> , für GCC und Clang:

%Vor%
  

Der folgende Code wird zwar von Clang akzeptiert, wird jedoch abgelehnt   von GCC:

Dieser folgende Code wird von Clang nur vor der Instantiierung akzeptiert, aber nachdem ein Fehler aufgetreten ist:

%Vor%

std::add_pointer<> kann nur ein Argument von tampitte annehmen: Ссылка

%Vor%

Mehr als ein Argument kann nur im internen namespace detail oder in einigen anderen Elementen vorkommen:

Mögliche Implementierung:

%Vor%

Dies wird getan, um diesen Code zu unterstützen:

%Vor%     
Alex 17.08.2016 11:55
quelle

Tags und Links