| Summary: | [4.7/4.8/4.9 regression] catch(...) in lambda rejected | ||
|---|---|---|---|
| Product: | gcc | Reporter: | omawarisan.bokudesu |
| Component: | c++ | Assignee: | Jason Merrill <jason> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | daniel.kruegler, jason |
| Priority: | P3 | Keywords: | c++-lambda |
| Version: | 4.8.0 | ||
| Target Milestone: | 4.7.4 | ||
| Host: | Target: | ||
| Build: | Known to work: | ||
| Known to fail: | Last reconfirmed: | 2013-04-09 00:00:00 | |
| Bug Depends on: | |||
| Bug Blocks: | 54367 | ||
The problem also exists for 4.7.2, so no regression. The diagnostics is interesting:
"7:9: error: '...' handler must be the last handler for its try block [-fpermissive]
catch(...){
^"
It's a regression from 4.6. Fixed for 4.7.4/4.8.1/4.9.0. *** Bug 57143 has been marked as a duplicate of this bug. *** |
"g++ -std=c++11" rejects the following program: int main() { bool /*const*/ condition = false; [&]{ try{} catch(...){ if(condition){} } }(); } If the condition variable is const, the compilation successes. Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/home/user/gcc-trunk/libexec/gcc/x86_64-unknown-linux-gnu/4.8.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../gcc/configure --prefix=/home/user/gcc-trunk --disable-bootstrap --disable-multilib --enable-languages=c,c++,fortran --with-gmp=/home/user/gcc-trunk/src/build/backends --with-mpfr=/home/user/gcc-trunk/src/build/backends --with-mpc=/home/user/gcc-trunk/src/build/backends Thread model: posix gcc version 4.8.0 20130219 (experimental) (GCC)