6
Considerando un tipo di variante e una funzione modello, , come posso verificare che il tipo di modello sia uno dei tipi della variante? Esiste un modo più elegante del seguente?Come verificare se un tipo di modello è uno dei tipi di un tipo di variante?
typedef boost::variant<Foo,Bar> Var;
template <typename T>
void f(const T& x)
{
BOOST_STATIC_ASSERT(
boost::is_same<T,Foo>::value
|| boost::is_same<T,Bar>::value
);
}
Nota: Io uso Boost 1,57 e gcc 4.8.3. Non uso C++ 11 per la compatibilità con le vecchie versioni di gcc.
E 'possibile fare un 'tratti contains' (ma senza variadic da C++ 11, non sono sicuro che sia più elegante). – Jarod42