C++11 静态lambda是否有用/不明智?
我正试图追踪一个很难复制的bug。我有一个项目池,当客户机处理完项目池项目后,使用以下方法自动将其签回:C++11 静态lambda是否有用/不明智?,c++11,lambda,C++11,Lambda,我正试图追踪一个很难复制的bug。我有一个项目池,当客户机处理完项目池项目后,使用以下方法自动将其签回: typedef std::shared_ptr<T> Handle; Handle MyPool::checkOut() { static const auto CheckInDeleter = [this](T* item) { this->checkIn(item); }; return Handle(item, Ch
typedef std::shared_ptr<T> Handle;
Handle MyPool::checkOut()
{
static const auto CheckInDeleter = [this](T* item)
{
this->checkIn(item);
};
return Handle(item, CheckInDeleter);
}
typedef std::shared_ptr句柄;
句柄MyPool::checkOut()
{
静态常量自动检查删除器=[此](T*项)
{
此->签入(项目);
};
返回手柄(项目,CheckInDeleter);
}
我的问题是这不安全吗?
是否将此分配给签出项目的第一个池?是的,静态函数范围变量分配一次,因此只有一个lambda对象,它将引用调用了签出成员函数的第一个MyPool
。这可能不是您所需要的,所以只需删除static