lambda表达式可以捕获CV限定的变量吗?

时间:2012-03-10 16:30:23

标签: c++ lambda

在以下代码段中,_filewatcher是一个const限定的左值引用。我想使用m_files成员函数将其与getPath()的每个成员进行比较。不幸的是,这个成员函数只能在const个对象上调用。这导致我写下这段代码:

ErrorCode DirectoryWatcherWindows::addMonitoredFile(const FileWatcherWindows& _fileWatcher)
{
    ErrorCode ret = Success;

    auto iter = std::find_if(m_files.begin(), m_files.end(),            
        [&](FileWatcherWindows* fileWatcher)
        {   
            return _fileWatcher.getPath() == fileWatcher->getPath();
        }
    );

    if (iter == m_files.end())
        m_files.push_back(&_fileWatcher);
    else
        ret = AlreadyExists;

    return ret;
}

这不能在MSVC10下编译,因为lambda表达式中的_fileWatcher不是const限定的。我尝试将捕获字段更改为[const&],但这也不起作用。

是否有任何方法可以在捕获中使用CV限定引用?

0 个答案:

没有答案