【发布时间】:2014-01-18 19:37:33
【问题描述】:
我有一个向量定义为:
std::vector<std::shared_ptr<Orders> > vOrders;
添加到vOrders 时,我想添加如下:
vOrders.push_back(<std::shared_ptr<Orders> >([]() {
TimerForProcessingOrders _timerForProcessingOrders;
_timerForProcessingOrders.detach();
}));
但是编译器给了我一个错误:
Expected expression: Expected '(' for function-style cast or type construction
std::shared_ptr 周围的 < 和 > 看起来很奇怪,但删除它会出现错误:
No matching conversion for functional-style cast from '<lambda >' to 'std::shared_ptr<Orders>'
我犯了什么错误?
【问题讨论】:
-
您希望使用 lambda 完成什么?
-
什么是订单?请添加其定义
-
使用
std::make_shared。它还消除了那些额外的尖括号的问题。
标签: c++ c++11 lambda shared-ptr stdvector