Принимая во внимание тип варианта и функцию шаблона, как я могу проверить, что тип шаблона является одним из типов варианта? Есть ли более элегантный способ, чем следующий?
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
);
}
Примечание. Я использую Boost 1.57 и gcc 4.8.3. Я не использую C++11 для совместимости со старыми версиями gcc.
contains
(но без вариации из С++ 11, не уверен, что это более элегантно). - person Jarod42   schedule 31.05.2016