Boost mpl if_
От: Multix  
Дата: 13.01.12 09:57
Оценка:
Всем добрый день, у меня стоит следующая задача — есть много много типов, я их все знаю, нужно написать шаблонную функцию, параметрами щаблона которой являются проверяемые типа. В результате мне нужно вернуть тип 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++'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.