Una funzione dichiarata 'constexpr' viene valutata in un contesto che richiede costanti a tempo di compilazione ma contiene istruzioni non permesse (es. I/O, cast reinterpret_cast o chiamate a funzioni non-constexpr).
CONSTEXPR_NOT_CONSTANT_EXPRESSION
→
Lo standard C++ vieta la specializzazione esplicita totale di un template di funzione o classe all'interno del corpo di un'altra classe; la specializzazione deve essere spostata all'esterno nell'ambito del namespace circostante.
SPECIALIZATION_NON_NAMESPACE
→
Un algoritmo generico della libreria standard (come std::sort o std::find) tenta di applicare l'operatore '<' o '==' a un tipo T per il quale tale operatore non è stato sovraccaricato.
SFINAE_SUBSTITUTION_FAIL
→
Regola sintattica fondamentale dei template C++: quando si dichiara una variabile con un tipo annidato all'interno di un parametro template (es. 'typename T::iterator it'), il compilatore richiede 'typename' per distinguere il tipo da un membro dati.
MISSING_TYPENAME_DEPENDENT
→
Negli standard precedenti a C++20 (C++11/C++14/C++17) i parametri template non-tipo potevano essere solo interi, puntatori o riferimenti; l'uso di float o double richiedeva C++20 o l'incapsulamento in costanti statiche.
NON_TYPE_TEMPLATE_FLOAT
→
All'interno di un template variadico (variadic template) una variabile o tipo del parameter pack ('Args...') deve essere espansa applicando l'operatore di unpacking '...' (es. 'std::forward<Args>(args)...').
PACK_MUST_BE_EXPANDED
→
In un template con forwarding reference ('template<typename T> void f(T&&)'), passando un lvalue il tipo dedotto diventa 'T&', che tramite reference collapsing ('T& &&' -> 'T&') produce un lvalue reference ordinario; tentare di trattarlo come rvalue puro senza 'std::forward<T>' genera errori.
FORWARDING_REF_COLLAPSE
→
Una clausola 'static_assert(condizione, messaggio)' inserita per convalidare requisiti sui tipi (type traits) o costanti di metaprogrammazione valuta l'espressione a 'false' arrestando la compilazione.
STATIC_ASSERT_FAILED
→