在以下代码段中,_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限定引用?