Использование enable_if для необязательного добавления члена структуры

Учитывая этот шаблон:

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...
}

... я хочу использовать "enable_if", чтобы член SpecialType существовал условно; то есть только тогда, когда шаблон создан с типами A=SpecialCase1 или SpecialCase2. Во всех остальных случаях я хочу, чтобы элемент SpecialType отсутствовал.

Если вам интересно, почему, речь идет об оптимизации, то есть о том, чтобы не нести бесполезную полезную нагрузку в структуре. Я новичок в метапрограммировании шаблонов, но я понимаю, что мне нужно как-то "enable_if" и два "is_same" - хотя точно не знаю, как...

РЕДАКТИРОВАТЬ: Выполнение этого с помощью универсального C++ (т.е. без специфики Boost) будет быть плюсом.

8
задан ttsiodras 13 April 2012 в 11:48
поделиться