【发布时间】:2015-01-21 12:17:15
【问题描述】:
我写了一小段代码,它会抛出很多错误,如果我不使用 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 和lambdas。
另外,dist 是 std::vector<int>
但奇怪的是,如果我将 decltype(f2) 替换为 f2,代码会出错。
为什么会这样?
【问题讨论】:
-
作为记录,这不是
priority_queue的有效比较器。这不是严格的弱排序。
标签: c++ c++11 compilation compiler-errors decltype