вторник, 18 ноября 2014 г.

[prog.c++] И этот человек еще что-то говорит против трехэтажных шаблонов?! ;)

Я тут давеча высказался о том, что чрезмерное использование шаблонов в C++ слишком сильно перешагнуло границу добра и зла... Но сам, тем не менее, сварганил вот такую вот конструкцию:

templatetypename ENGINE >
class timer_manager_impl_template_t
   :  protected timer_manager_threading_dependent_part_t< ENGINE::threading > 
{
public :
   templatetypename... ARGS >
   timer_manager_impl_template_t( ARGS && ... args )
      :  m_engine( std::forward< ARGS >(args)... )
   {
   }
   ...
};

template<
   threading THREADING,
   typename ERROR_LOGGER,
   typename ACTOR_EXCEPTION_HANDLER >
class timer_list_manager_template_t
   : public details::timer_manager_impl_template_t<
               details::timer_list_engine_t<
                     THREADING,
                     ERROR_LOGGER,
                     ACTOR_EXCEPTION_HANDLER > > 
{
   ...
};

Что, почему-то, заставило вспомнить народное выражение "Чья бы корова мычала" :)))

PS. А вообще, конечно, C++11 рулит неимоверно. Жаль только, что какие-то фичи из С++11 в MS VisualStudio 2013 не поддерживаются. Например, наследование конструкторов. Но радует, что VisualStudio 2015 уже на подходе.

Комментариев нет: