关于编译Lambda时报告返回的为void的错误
生活随笔
收集整理的這篇文章主要介紹了
关于编译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;elsereturn 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.
轉載于:https://www.cnblogs.com/pangblog/p/3362294.html
總結
以上是生活随笔為你收集整理的关于编译Lambda时报告返回的为void的错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/C++中的段错误(Segmentat
- 下一篇: PowerDesigner提示This