воскресенье, 23 ноября 2014 г.

[prog.c++] Классный трюк с использованием std::result_of в списке параметров шаблона

Подсмотрен здесь (а туда взят со stackoverflow):

template<
   typename T,
   typename F,
   typename R = typename std::result_of<F(T)>::type >
std::vector<R>
select(std::vector<T> const & c, F s)
{
   std::vector<R> v;
   std::transform(std::begin(c), std::end(c), std::back_inserter(v), s);
   return v;
}

Суть трюка в том, что он позволяет вывести тип R, который должен быть указан как тип значения для возвращаемого функцией std::vector-а.

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