我试图找出一个函数所需的返回类型,该函数返回一个按照模板化迭代器Iter的值类型键入的无序映射,以及使用值的值调用lambda(F)的结果。迭代器。我在C ++ 1y模式下使用GCC 4.9.1进行编译。
就我而言,这可能会走向完全错误的方向,因为我的模板经验很少。
template<typename Iter, typename Func>
unordered_map<Iter::value_type, decltype(F(*Start)) Map(Iter Start, Iter End, Func F)
任何建议表示赞赏。
答案 0 :(得分:4)
template< class Iter, class Func>
auto Map( Iter Start, Iter End, Func F )
-> unordered_map<typename Iter::value_type, decltype(F(*Start))>
更一般地说,您可以leverage std::function
推导出已知函数类型的结果类型,
template< class Func >
struct ResultOf
{
typedef typename std::function<
typename std::remove_pointer<Func>::type
>::result_type T;
};