Wie deaktivieren Sie das Caching von Konzeptbewertung?C++

Programme in C++. Entwicklerforum
Anonymous
 Wie deaktivieren Sie das Caching von Konzeptbewertung?

Post by Anonymous »

Es scheint, dass alle Compiler die Bewertungen von Konzepten einschränken. Wenn also ein Konzept als falsch bewertet wurde, wird es für dasselbe Argument nicht erneut bewertet:

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 = [] {} 
zusätzliches Vorlagenargument hinzuzufügen, der jedes Mal einen neuen Typ haben soll:

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  
, wo es falsch war. Online -Demo: https://gcc.godbolt.org/z/fg1nx884x
Ist GCC hier korrekt?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post