http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53078
Bug #: 53078
Summary: [C++11] Wrong diagnostic "no return statement in
function returning non-void" on
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: [email protected]
ReportedBy: [email protected]
GCC erroneously warns about a missing return in lambdas where the return type
is to be deduced as void.
Example:
$ cat a.c++
int main() { auto x = []{}; }
$ g++-4.8 -std=c++11 -Wall -Wextra -Werror -pedantic a.c++
a.c++: In lambda function:
a.c++:1:30: error: no return statement in function returning non-void
[-Werror=return-type]
cc1plus: all warnings being treated as errors
$
Neither of the following alternatives produces this diagnostic:
int main() { auto x = []{ return; }; }
int main() { auto x = []() -> void {}; }