c++ - msvc std::function 不接受带有嵌套 lambda 的通用 lambda

标签 c++ visual-c++ gcc lambda c++17

以下适用于 gcc 5.2 和 clang 3.7,但不适用于 msvc 2015:

#include <functional>

int main()
{
  auto const foo = [](auto&& i) {
    auto const bar = []{ return 100; };
    return bar();
  };

  std::function<int(int)> fn = foo;
  return 0;
}

是msvc的bug还是gcc和clang太松了?

最佳答案

如果我尝试使用 Microsoft's official online compiler ,版本 19.00.23602.0(x86) 最后更新于 2015 年 12 月 3 日,我得到执行超时1。删除 std::function<int(int)> fn = foo;将允许编译成功。欢迎通过 Visual Studio Connect 告知 Microsoft这样他们就可以调查错误并报告它。是的,人们可能会浪费时间翻阅标准以查看这是否是“合法”代码,但使用错误跟踪器会让您物有所值。

1 内部编译器错误始终是错误。

关于c++ - msvc std::function 不接受带有嵌套 lambda 的通用 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34248067/

相关文章:

c++ - memcpy - BYTE 的 int 变量

c++ - 为什么 'operator>' 需要 const 而 'operator<' 不需要?

c++ - 使用 SSE/AVX 获取存储在 __m256d 中的值的总和

c++ - 将 shared_ptr 分配给自身安全吗?

android - 在 Open GL 原生 Android 中显示来自原始数据的纹理

c++ - 如何通过单击 MainFrame 中的按钮来更改 MFC View

c++ - C++ 中的一元运算符重载特例

c - C结构如何传递给汇编函数?

c++ - 编译 Sundance-4.73

用于指定 ARM 或 Thumb 模式的 C 预处理器/编译器指令?