【问题标题】:C++ 11 lambda callback in VS 2013 won't compileVS 2013 中的 C++ 11 lambda 回调无法编译
【发布时间】:2015-11-20 21:24:02
【问题描述】:

我不明白为什么我的以下代码无法在 VS 2013 中编译。编译器只是报错如下,我不知道如何解决它:

e:\work\justtest\console\console.cpp(37): 错误 C2664: 'bool dfsFolder(const wchar_t *,const wchar_t *,std::function &)' :无法将参数 3 从 '主要::' 到 'std::function &'

bool dfsFolder(__in const wchar_t* folderPath, __in const wchar_t* ext, const std::function<bool(const std::wstring& wsFilePath)>& pFunc)
{

}

int main()
{
        auto path = LR"(F:\TODOWNLOAD\)";
        auto lambda = [&](const std::wstring& wsFilePath) mutable -> bool
        {
            wcout << wsFilePath << endl;
            return true;
        };
        dfsFolder(path, L"*.jpg", lambda);
}

【问题讨论】:

  • 它使用 GCC 4.8 编译
  • 错误消息似乎与代码不匹配:最后一个参数是std::function&lt;...&gt; const&amp;,而不是错误中所述的std::function&lt;...&gt;&amp;。您的实际代码是否将std::function&lt;...&gt;&amp; 参数声明为const
  • @DietmarKühl,非常感谢。事实上,你解决了我的问题。为自己感到羞耻。我在声明中丢失了“const”。但是,我不能接受您的评论作为答案。你能上传一个答案,然后我会把你的答案标记为解决方案。
  • 这就是为什么你真的需要发布一个最小的例子你已经确认重现了问题

标签: c++ c++11 lambda


【解决方案1】:

错误消息似乎与代码不匹配:最后一个参数是std::function&lt;...&gt; const&amp;,而不是错误中所述的std::function&lt;...&gt;&amp;。您的实际代码是否将std::function&lt;...&gt;&amp; 参数声明为const

【讨论】:

  • 如果在我的声明中添加缺少的 'const' 关键字,我的代码将编译。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 2013-07-13
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多