Erfordert Expression Angaben zum Kompilierungsfehler anstelle von Falsch für std :: einzietrat_ptr in C ++ 20C++

Programme in C++. Entwicklerforum
Anonymous
 Erfordert Expression Angaben zum Kompilierungsfehler anstelle von Falsch für std :: einzietrat_ptr in C ++ 20

Post by Anonymous »

Ich experimentiere mit C ++ 20-Konzepten und erfordert Ausdrücke. STD :: Unique_ptr auf gcc und klang:

Code: Select all

#include 

template 
inline constexpr bool is_dereferenceable_v = requires(T t) { *t; };

static_assert(!is_dereferenceable_v); // Should be fine
static_assert(is_dereferenceable_v);  // Also fails
Demo
Erwartete Verhalten:

[*] Der Ausdruck *t ist nicht gut geformt für std :::Riadium_ptr (weil derferencing void * is usw. ist. Expression sollte falsch .
zurückgeben

Code: Select all

static_assert(!is_dereferenceable_v)
sollte passieren. noexcept (*pointer) Spezifizierer. /> Frage: < /strong>

Ist dieses Verhalten ein Fehler in GCC /Clang? Nach dem Standard benötigt { *t; } sollte false für ungültige Ausdrücke zurückgeben, anstatt einen Kompilierungsfehler zu verursachen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post