【发布时间】:2015-04-02 17:14:41
【问题描述】:
我觉得问这个问题很愚蠢,但我真的很想知道原因,然后再认真地“输入两次”我的未来代码。
例如,我从myVector(代码前定义的向量)构造一个绝对最大priority_queue:
auto comp = []( int a, int b ) { return abs(a) < abs(b); };
priority_queue<int, vector<int>, decltype(comp)> pq(comp, myVector);
comp lambda 需要填写模板(我同意,因为这个 priority_queue 实例在其生命周期中将具有该 order 属性),并且在构造函数中也需要(这让我感到困惑)。
为什么构造函数不能根据模板中的订单信息推导出订单?
【问题讨论】:
-
因为 lambdas 不是默认可构造的。
-
@T.C.你能详细说明你的评论吗?
标签: templates c++11 constructor lambda priority-queue