Dato questo modello:Utilizzando enable_if facoltativamente aggiungere un membro struct
template <class A>
struct Something {
... // members common to all template instantiations for all A types
SpecialType member; // but not this - I want this to be conditional...
}
... voglio usare "enable_if" per avere il membro SpecialType esiste condizionatamente; cioè, solo quando il modello viene istanziato con i tipi A = SpecialCase1 o SpecialCase2. In tutti gli altri casi, voglio che manchi il membro SpecialType.
Nel caso vi stiate chiedendo perché, questo riguarda l'ottimizzazione, ovvero non trasportare un carico utile inutile nella struttura. Sono un novizio in metaprogrammazione del modello, ma capisco che ho bisogno di "enable_if" e due "is_same" in qualche modo - non sono sicuro esattamente come, però ...
EDIT: farlo con C++ generico (cioè senza specifiche Boost) sarebbe un vantaggio.
'if_' viene solitamente chiamato' std :: condizionale'. –
@KerrekSB: Ah, grazie, sono un po 'un vecchio timer, temo. In Boost MPL era 'if_' :) Non ho ancora scavato molto nelle nuove librerie C++ 11:/ –