Seite 1 von 1

Woran verschluckt sich CLANG hier?

Verfasst: 05.08.2020, 17:55
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.

Re: Woran verschluckt sich CLANG hier?

Verfasst: 06.08.2020, 08:02
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.

Re: Woran verschluckt sich CLANG hier?

Verfasst: 06.08.2020, 10:28
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

Re: Woran verschluckt sich CLANG hier?

Verfasst: 06.08.2020, 13:21
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