6
Bir varyant türü ve bir şablon işlevi göz önüne alındığında, Şablon türünün varyantın türlerinden biri olup olmadığını nasıl kontrol edebilirim? Aşağıdakilerden daha şık bir yolu var mı?Bir şablon türünün varyant türünden biri olup olmadığı nasıl kontrol edilir?
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
);
}
Not: Ben 1.57 ve gcc 4.8.3 Boost kullanın. Eski gcc sürümleriyle uyumluluk için C++ 11 kullanmayın.
Sen (ancak variadic olmadan bir özellikleri 'contains' yapabilir C++ 11, daha zarif olduğundan emin değilsiniz. – Jarod42