P0091R3 ("Vorlagenargumentabzug für Klassenvorlagen") ) wurde kürzlich zu gcc
trunk hinzugefügt und kann sein getestet auf wandbox .
Etwas, das ich im Sinn hatte, war die Möglichkeit, es zu verwenden, um ein "scope guard" in wenigen Zeilen Code:
%Vor%Ich habe versucht es auf der Wandbox zu implementieren ...
%Vor%... aber die Kompilierung ist mit dem folgenden Fehler fehlgeschlagen:
%Vor%Ich habe dann mit einem lokalen Typ ohne Lambda versucht und den gleichen Fehler erhalten.
%Vor%Danach habe ich einen nicht-lokalen Typ versucht, und es hat wie erwartet funktioniert.
%Vor%Ist dieses Feature so konzipiert, dass lokale Typen nicht abgeleitet werden können?
Oder ist das ein Fehler in der aktuellen Implementierung von gcc
?
Dies ist ein Fehler in der aktuellen Implementierung: 77890 ( NEW impliziert Gültigkeit , im Gegensatz zu UNCONFIRMED in 7.0 fixiert). Die Möglichkeit, ein Lambda abzuleiten, war eines der motivierenden Beispiele der Originalarbeit, also wäre es ziemlich peinlich, wenn es nicht funktionieren würde:
%Vor%
%Vor%
Wir können ein wirklich einfaches Beispiel erstellen:
%Vor%Dies sollte eine Überladungsauflösung auf dem synthetisierten Funktionssatz durchführen, der aus den Funktionen besteht:
%Vor% sollte die erste Überladung auswählen und diesen Rückgabetyp als Typ von _
verwenden, wobei TF
der Typ des Lambda ist. Das sollte alles funktionieren.
Tags und Links c++ gcc templates c++17 template-deduction