Всем добрый день, у меня стоит следующая задача — есть много много типов, я их все знаю, нужно написать шаблонную функцию, параметрами щаблона которой являются проверяемые типа. В результате мне нужно вернуть тип A если все указанные типы в параметре шаблона присутсвуют в списке типов, либо тип В если хотя бы один отсутствует.
Попробовал в таком виде, но что то не захотело собираться
typedef boost::mpl::vector<Money,Uuid,Date,DateTime,Time,std::string, const char*,float,double,int8,int16,int32,int64> types;
typedef boost::mpl::vector<XmlInfo> types2;
template<typename Type1, typename Type2>
struct check_convert_types
{
typedef typename boost::mpl::or_<
boost::mpl::contains< types, Type1 >,
boost::mpl::contains< types, Type2 >,
boost::mpl::contains< types2, Type1 >,
boost::mpl::contains< types2, Type2 > >::type ResType;
};
template<typename A, typename B>
struct a
{
typedef boost::mpl::if_< typename check_convert_types<A, B>::ResType, std::string, boost::mpl::empty_base >::type result;
};
a<float,double> x;
Данный код не получается скомпилить, хелп плиз
13.01.12 14:33: Перенесено из 'C/C++'