четверг, 10 сентября 2015 г.

[prog.c++11] Шаблоны, шаблоны, кругом одни шаблоны... ;)

Временами складывается ощущение, что я уже перешел границу своих умственных возможностей и если меня попросят, то объяснить смысл и принцип работы некоторых фрагментов кода я уже не смогу :)

Под катом малюсенький кусочек современного C++ для иллюстрации...

template<
      typename RESULT,
      typename SIGNAL,
      typename TARGET,
      typename FUTURE_TYPE = typename std::enable_if<
            so_5::rt::is_signal< SIGNAL >::value,
            std::future< RESULT > >::type >
FUTURE_TYPE
request_future(
   TARGET && who )
   {
      using namespace make_async_details;

      so_5::rt::ensure_signal< SIGNAL >();

      return arg_to_mbox( std::forward< TARGET >(who) )
            ->template get_one< RESULT >()
            .template async< SIGNAL >();
   }

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