Code: Select all
template
concept C = T::a;
struct A;
static_assert(!C);
struct A { static constexpr bool a = true; };
static_assert(C); //< fails everywhere unless above static_assert is removed
< /code>
Kann ich dieses Caching irgendwie deaktivieren? Ich habe versucht, dem Konzept mit Standardwert von Lambda auto = [] {}
Code: Select all
template
concept C = T::a;
struct A;
static_assert(!C);
struct A { static constexpr bool a = true; };
static_assert(C); //< fails in GCC only
< /code>
Es hat tatsächlich mit Clang, EDG und MSVC funktioniert. GCC führt jedoch immer noch Caching aus der vorherigen Konzeptbewertung durch C
Ist GCC hier korrekt?