Шаблонное метапрограммирование в купе с последними наворотами:
здесь все понятно, да?
template< size_t NumVars, typename Visitor, typename ... V > struct VisitorImpl {
typedef decltype(std::declval<Visitor>()(get<0>(static_cast<const V&>(std::declval<V>()))...)) result_type;
typedef VisitorApplicator<result_type> applicator_type;
};
} // detail
// No perfect forwarding here in order to simplify code
template< typename Visitor, typename ... V > inline auto visit(Visitor const& v, V const& ... vars) -> typename detail::VisitorImpl<sizeof ... (V), Visitor, V... > ::result_type { typedef detail::VisitorImpl<sizeof ... (V), Visitor, V... > impl_type;
return impl_type::applicator_type::apply(v, vars...); }








Публикации
Мужчина
