Woran verschluckt sich CLANG hier?

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
DerAlbi
Establishment
Beiträge: 269
Registriert: 20.05.2011, 05:37

Woran verschluckt sich CLANG hier?

Beitrag von DerAlbi »

https://godbolt.org/z/sP1Wex

Code: Alles auswählen

struct empty {};

template<auto arg> void Test() { }

empty e1;

void WTF()
{
    Test<e1>();	//<----

    empty e2;
    Test<e2>();  //<----
}
Gcc tut.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4854
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Woran verschluckt sich CLANG hier?

Beitrag von Schrompf »

Du nimmst eine Instanz als Template-Parameter, keinen Typ. Mich wundert, dass der GCC das akzeptiert. Beide Test<>-Instanzen sind ja identisch, weil sie jeweils mit Typ empty instanziiert wurden.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Matthias Gubisch
Establishment
Beiträge: 470
Registriert: 01.03.2009, 19:09

Re: Woran verschluckt sich CLANG hier?

Beitrag von Matthias Gubisch »

Vermutlich am unfertigen C++20 Support...

https://godbolt.org/z/Yr3f5E

Wenn du beim gcc den standard auf c++20 stellst compiliert das sauber durch, mit c++17 nicht wie du siehst.
Edit:

Das da:
http://www.open-std.org/jtc1/sc22/wg21/ ... 907r1.html
sollte genau dein Problem sein.
Laut dem hier:
https://en.cppreference.com/w/cpp/20 aktuell supported auf GCC und msvc19.26
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
DerAlbi
Establishment
Beiträge: 269
Registriert: 20.05.2011, 05:37

Re: Woran verschluckt sich CLANG hier?

Beitrag von DerAlbi »

Danke. Also warten und Tee trinken :-)
Ich hatte bisher nur die gcc-version zurückgeschraubt.. das scheint da schon eine Weile zu funktionieren
Antworten