Kann der automatische Platzhalter verwendet werden, um Funktionsergebnisse in Nicht-Typ-Template-Parametern abzuleiten?

9

Betrachten Sie ein einfaches Beispiel:

%Vor%

Sowohl [gcc] als auch [clang ] scheint den Code zu akzeptieren. Ist der Code wirklich C ++ 17 kompatibel? Wenn ja, gibt es eine andere Regel, die den folgenden Code schlecht ausgebildet macht?

%Vor%

Dieser macht nur [gcc] unglücklich.

Fehlermeldung:

%Vor%     
W.F. 27.01.2018, 22:10
quelle

1 Antwort

2

Ja, auto kann in einem zusammengesetzten Typ verwendet werden ( [temp.param] /4.6 , [dcl.type.auto.deduct] ). Ich glaube, dass gcc in Ihrem zweiten Beispiel falsch ist: Ihre explizit angegebene T von int wird vor dem Abzug ([temp.educt] /2.3, / 5 und / 6, referenziert durch [dcl.type. auto.educt] /2.3 und / 4).

    
Davis Herring 27.01.2018, 23:09
quelle