Teniendo en cuenta esta plantilla:Usando enable_if Opcionalmente, para añadir un miembro de estructura
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...
}
... Quiero usar "enable_if" para que el miembro de SpecialType existe condicionalmente; es decir, solo cuando se crea una instancia de la plantilla con los tipos A = SpecialCase1 o SpecialCase2. En todos los demás casos, deseo que el miembro SpecialType falte.
En caso de que se pregunte por qué, se trata de la optimización, es decir, no llevar una carga inútil en la estructura. Soy un novato en la metaprogramación de plantillas, pero entiendo que necesito "enable_if" y dos "is_same" de alguna manera, pero no estoy seguro exactamente cómo ...
EDIT: Haciéndolo con C++ genérico (es decir, sin Boost-specific) Sería una ventaja.
'if_' se suele llamar' std :: conditional'. –
@KerrekSB: Ah, gracias, soy un poco viejo, me temo. En Boost MPL era 'if_' :). No he excavado mucho en las nuevas bibliotecas de C++ 11 todavía:/ –