Ho un tipo di tratto che controlla se un determinato tipo è un'istanza di un determinato modello di classe:Unificare tipo e non di tipo parametri di modello
template <template <typename...> class C, typename T>
struct check_is_instance_of : std::false_type { };
template <template <typename...> class C, typename ...Ts>
struct check_is_instance_of<C, C<Ts...>> : std::true_type { };
template <template <typename...> class C, typename T>
struct is_instance_of : check_is_instance_of<C, std::remove_cv_t<T>> { };
Purtroppo, questo non funziona per i non-tipo parametri del modello in quanto non sono "catturati" dai parametri del modello variadic, così
is_instance_of<std::integral_constant, std::true_type>
produce una fase di compilazione errore. Esiste un modo per scrivere un'implementazione di is_instance_of
che funzioni per un numero arbitrario di parametri modello tipo e non tipo?
una risposta alla tua domanda, ma questa implementazione non funzionerà con alias modello di modello. Forse questo è quello che vuoi, ma forse no. – TartanLlama