我有一個書面的一小塊代碼拋出了很多的錯誤,如果我dont't使用decltype
關鍵字同時與decltype
關鍵字它編譯罰款: -這段代碼中decltype的用法是什麼?
std::function<bool(int,int)> f2 = [dist](int n1,int n2) {if(dist[n1] < dist[n2]) return false ; return true ; } ;
priority_queue<int,vector<int>,decltype(f2)> pq(f2) ;
在這裏,我想聲明一個priority_queue
與我自己的自定義比較功能,所以我決定使用std::function
和lambda。
此外,dist
是std::vector<int>
但奇怪的是,該代碼給出了錯誤,如果我只用f2
取代decltype(f2)
。
爲什麼是這樣?
爲了記錄,這是* not *是'priority_queue'的有效比較器。這不是一個嚴格的弱秩序。 – 2015-01-21 13:07:40