zoukankan      html  css  js  c++  java
  • 关于编译Lambda时报告返回的为void的错误


    这个错误的信息是这样的:

    a lambda that has been specified to have a void return type cannot return a value


    报告错误的lambda的写法大概是这样:


    [] (int a, int b){
        if (a<b)
            return true;
        else
            return false;
    };



    这个lambda在gcc下编译没有问题,在vc10下就会报上面的那个错误。


    可以换成这种写法就OK了。


    [](int a, int b){
        return a<b;
    };

    至于为什么,看这个解释:

    The C++11 standard, §5.1.2/4 states:

    If a lambda-expression does not include a trailing-return-type, it is as if the trailing-return-type denotes the following type:

    • If the compound-statement is of the form { return expression ; } the type of the returned expression after lvalue-to-rvalue conversion (4.1), array-to-pointer conversion (4.2), and function-to-pointer conversion (4.3);

    • otherwise, void.


  • 相关阅读:
    vertical-align
    剑指offer刷题
    ES6 promise
    wangyi准备
    spring定时器
    xshell下linux常用操作
    HSSFWorkbook生成excel文件
    梳理并分解继承体系
    JSON格式数据转换
    部署项目
  • 原文地址:https://www.cnblogs.com/pangblog/p/3362294.html
Copyright © 2011-2022 走看看