2013-05-21 13 views

Odpowiedz

11

można czerpać z szablonu, który ma specjalizację:

struct real_type { }; 

template<bool c> 
struct foo_base { }; 

template<> 
struct foo_base<true> 
{ 
    real_type _member; 
}; 

template<bool condition> 
struct foo : foo_base<condition> 
{ 
}; 

jako mały testu:

int main() 
{ 
    foo<true> t; 
    t._member.x = 42; // OK 

    foo<false> f; 
    f._member.x = 42; // ERROR! No _member exists 
} 
+0

@MikeSeymour: Prawo, resztki :) Dziękuję edytowany –

+0

Great! W ten sposób nie będę miał "pustych" struktur w mojej klasie, gdy warunek jest fałszywy – Felics

+0

@Felics: Tak, to jest poprawne –

0

Czy jest możliwe aby zadeklarować lub nie jest zmienną składową zależną od stanu szablonu bez użycia manekina pusty typ?

Wierzę, można również specializebez pozyskiwania. To testowane OK zarówno pod -std=c++03 i -std=c++11.

template<bool condition> 
struct foo; 

template<> 
struct foo<true> 
{ 
    real_type _member; 
}; 

template<> 
struct foo<false> 
{ 
}; 

Na pewno byłoby miło, gdyby komisja C++ dał nam to, czego chciał/potrzebował:

template<bool condition> 
struct foo 
{ 
#if (condition == true) 
    real_type _member; 
#endif 
}; 
Powiązane problemy