外部“C”函数中的通用lambda

时间:2017-08-09 12:22:00

标签: c++ visual-c++ lambda c++14 extern-c

以下代码被gcc 6和clang 4接受,但声称支持C ++ 14的MSVC 2017(特别是通用lambdas)将其丢弃error C2894: templates cannot be declared to have 'C' linkage

extern "C" void f() {
    std::vector<int> v { 1, 2, 3 };
    std::for_each(std::begin(v), std::end(v), [](auto& x) {
        x++;
    });
    std::cout << v[0];
}

我理解泛型lambda在内部被翻译成带有模板化调用操作符的结构但是它如何干扰extern“C”?

这是MSVC中的错误吗?你能建议在extern“C”函数中使用泛型lambda的解决方法吗?

更新

我向Microsoft报告了此问题,回复是

  

感谢您的反馈!我们已确定此问题不是错误。请参见msdn https://msdn.microsoft.com/en-us/library/95bhc9c2.aspx

没有解释太多。

0 个答案:

没有答案