Bei der Beantwortung Wie mache ich schreibe einen Lambda-Ausdruck, der wie eine Methode aussieht? Ich habe versucht, ein Captureless-Lambda in einen Memberfunktionszeiger umzuwandeln, indem ich die Tatsache ausnutze, dass seit C ++ 17 Capturesslambdas einen constexpr Konvertierungsoperator zu ihrem Funktionszeigertyp.
Ich kam also auf ein Problem zu:
%Vor%Nun kompiliert dies in clang (seit 5.0.0), aber gcc (& gt; = 7.2) beschwert sich:
%Vor%Die Frage ist, wer hat Recht?
Dies ist ein gcc-Fehler, der 83258 eingereicht wurde.
In C ++ 14 hatten wir eine Verknüpfungsanforderung für nicht typisierte Vorlagenparameter vom Zeigertyp. Aber in C ++ 17 (als Ergebnis von N4268 ) ), muss der Parameter nur ein konvertierter konstanter Ausdruck vom richtigen Typ sein , mit ein paar weiteren Einschränkungen (von denen keine hier relevant sind). Sobald wir fp
konstruieren können, sollten wir es als Vorlageparameter verwenden können.
Tags und Links c++ lambda templates language-lawyer c++17