簡體   English   中英

來自lambda的返回類型的模板化函數返回類型

[英]Templated function return type from return type of a lambda

我正在嘗試為函數提供所需的返回類型,該函數將返回無序映射,該映射以模板化迭代器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)

任何建議表示贊賞。

template< class Iter, class Func>
auto Map( Iter Start, Iter End, Func F )
    -> unordered_map<typename Iter::value_type, decltype(F(*Start))>

通常,您可以利用std::function推斷出已知函數類型的結果類型,

template< class Func >
struct ResultOf
{
    typedef typename std::function<
        typename std::remove_pointer<Func>::type
        >::result_type T;
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM