通用lambda尾随返​​回类型的函数作用域名称将无法编译(MSVC)

时间:2018-11-19 19:35:12

标签: visual-c++ c++14 trailing-return-type generic-lambda

给出以下代码段,情况1、2、3和4在Visual Studio 2017(/ std:c ++ 14)中进行编译,但情况5则没有。发生了什么事?

name=".."

这是编译器的输出。

int i;
auto case1 = [](auto) -> decltype(i, void()) {};

int main() {
    int j;
    auto case2 = [](int) -> decltype(j, void()) {};
    auto case3 = [j](auto) -> decltype(j, void()) {};
    auto case4 = [](auto) -> decltype(i, void()) {};
    auto case5 = [](auto) -> decltype(j, void()) {};

    case1(int()); // OK
    case2(int()); // OK
    case3(int()); // OK
    case4(int()); // OK
    case5(int()); // Error: message below
    return 0;
}

1 个答案:

答案 0 :(得分:0)

这是MSVC中的错误。我打开了一个错误:Error instantiating lambda template 修复程序按优先级排序。随时提出意见。