C++11 静态lambda是否有用/不明智?

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

我正试图追踪一个很难复制的bug。我有一个项目池,当客户机处理完项目池项目后,使用以下方法自动将其签回:

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