Sono stato su questo problema per tutta la mattinata senza alcun risultato. Fondamentalmente, ho bisogno di una semplice metaprogrammazione che mi permetta di diramarti verso diverse specializzazioni se il parametro passato è una specie di std :: vector o meno.Come sapere se un tipo è una specializzazione di std :: vector?
Alcuni tipi di is_base_of per i modelli.
Esiste una cosa del genere?
Con "specializzazione" intendi eredità? O un alias di tipo (ad esempio 'typedef')? O un'implementazione specializzata per un certo tipo (come 'std :: vector' is)? –
La tua domanda è vaga: se vuoi determinare se un tipo è una specializzazione template di 'std :: vector' per un tipo, non dovresti riuscire a farlo (non in modo pulito comunque). Se vuoi determinare se un tipo è ereditato da std :: vector, questo è esplicitamente sconsigliato (std :: vector non ha un distruttore virtuale e NON DEVE essere ereditato, solo incapsulato). Se vuoi determinare se un parametro class/typedef/template è un std :: vector , dovresti usare una classe di caratteri basata su modelli (vedi risposta da jrok). –
utnapistim
@utnapistim: Non è * difficile * verificare se un tipo è una specializzazione di un modello in generale. –