C++14的Lambda新特性

在C++14 中新增了对捕获变量的初始化,且不影响原来的变量

    int a;
    auto func = [a = 10]()mutable{
        cout << a << endl;
    };
    func();
    cout << "a:" << a << endl; //这里的a还是没有初始化的状态

自动获取实参类型

    auto func = [auto v1,auto v2] { return v1 + v2; }
    cout << func(10,20.4) << endl;

C++17新特性 可以对if、switch语句进行初始化

    //作用域是其初始化后的if else 语句
    if(int a = 10; a>10) {
        a = 1;
    }else if(int b = 20; a> 5 && b>10) {
        b = 2;
        a = 2;
    }else if(0) {
        b = 3;
        a = 3;
    }else {
        b = 4;
        a = 4;
    }

    //变量a的作用域是他所在的switch 语句
    switch(int a = 10; a){
        case 1:
            break;
        case 5:
            break;
        default:
            break;
    }