madf: (Default)
madf ([personal profile] madf) wrote2012-07-30 09:46 pm

Boost.MPL

У середу відкрив ля себе Boost.MPL. Четвер, п’ятниця і обидва вихідних тупо випали і спробувати її не було нагоди. Зате читав багато документації і уявляв як усе буде круто і як наступить щастя на планеті.
Реальність виявилась не такою чарівною. Variadic Templates у Boost.MPL досі не підтримуються. А значить щоб зробити apply вектора типів треба його рекурсивно розгортати. Тим часом мій Sort працює з Variadic Templates і apply'їться без проблем.
Постав перед вибором: красиво і стандартно чи коротко і зрозуміло.
В принципі, мені-то тільки boost::mpl::sort і потрібен, а значить можна обійтись своїми "велосипедами".
PS:
typedef boost::mpl::vector<B, D1, D2, DD>::type types;                    
                                                                                
typedef boost::mpl::sort<types, boost::mpl::not_<std::is_base_of<boost::mpl::_1, boost::mpl::_2>>>::type sortedTypes;
                                                                                
typename apply<HContainer, sortedTypes>::type data;

apply стібрив звідси: https://github.com/scientific-coder/Computer-Languages/blob/master/interpreting/apply.hxx
Бо мене трошки запарило розгортати ці рекурсивні типи даних.

Одним словом: розчарування.