È il meccanismo classico di SFINAE: quando la condizione booleana passata a 'std::enable_if<cond>' è falsa, la struttura non definisce il membro 'type' escludendo la funzione dal set di candidati dell'overload.
ENABLE_IF_NO_TYPE
→
Passare un template come parametro (es. 'template<template<typename> class Container>') a una classe che richiede argomenti aggiuntivi (come 'std::vector' che accetta due parametri: tipo e allocatore) fallisce a meno di usare template template variadici.
TEMPLATE_TEMPLATE_PARAM_MISMATCH
→
Il compilatore tenta di dedurre i tipi dei parametri di un template dai parametri passati alla funzione ma trova incongruenze (es. deducendo T=int e T=double contemporaneamente) o fallisce la sostituzione nei concetti/SFINAE.
TEMPLATE_DEDUCTION_FAILED
→