Opened 9 years ago
Closed 8 years ago
#9544 closed Bugs (worksforme)
gcc 4.9.0 -std=c++1y breakage
Reported by: | Owned by: | John Maddock | |
---|---|---|---|
Milestone: | To Be Determined | Component: | regex |
Version: | Boost 1.55.0 | Severity: | Problem |
Keywords: | Cc: |
Description
The program below fails to compile with development gcc in C++1y mode; it works in C++11 mode. I don't know whether this is a fault in gcc or in boost, but thought an early warning was worth providing. This is with the current super-project master branch; I believe it also fails on develop.
llc[900]$ cat /tmp/bre.cc #include <boost/regex.hpp> const boost::regex e("AB"); llc[901]$ g++ --version g++ (GCC) 4.9.0 20140104 (experimental) Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. llc[902]$ g++ -std=c++11 -I/opt/boost -c /tmp/bre.cc llc[903]$ g++ -std=c++1y -I/opt/boost -c /tmp/bre.cc In file included from /opt/boost/boost/regex/v4/regex.hpp:70:0, from /opt/boost/boost/regex.hpp:31, from /tmp/bre.cc:1: /opt/boost/boost/regex/v4/basic_regex_creator.hpp: In member function ‘boost::re_detail::re_literal* boost::re_detail::basic_regex_creator<charT, traits>::append_literal(charT)’: /opt/boost/boost/regex/v4/basic_regex_creator.hpp:347:24: error: lvalue required as increment operand ++(result->length); ^ In file included from /opt/boost/boost/regex/v4/regex.hpp:73:0, from /opt/boost/boost/regex.hpp:31, from /tmp/bre.cc:1: /opt/boost/boost/regex/v4/basic_regex_parser.hpp: In member function ‘bool boost::re_detail::basic_regex_parser<charT, traits>::parse_repeat(std::size_t, std::size_t)’: /opt/boost/boost/regex/v4/basic_regex_parser.hpp:974:21: error: lvalue required as decrement operand --(lit->length);
Change History (5)
comment:1 by , 9 years ago
comment:2 by , 9 years ago
No issues.
llc[1036]$ g++ --version g++ (GCC) 4.9.0 20140104 (experimental) Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. llc[1037]$ g++ -std=c++11 -c /tmp/f.cc llc[1038]$ g++ -std=c++1y -c /tmp/f.cc llc[1039]$
comment:4 by , 9 years ago
[ Marshall posting for Peter ]
This issue arose as of GCC SVN commit 197248 which implements N3582. It occurs because the change on line 4109 preserves parentheses at the front end (with that change reverted, gcc works correctly).
This is now PR C++/59681. The fix in GCC is not trivial, so I've just made pull #1 so the trivial fix for boost (remove the parens) can be applied.
comment:5 by , 8 years ago
Resolution: | → worksforme |
---|---|
Status: | new → closed |
This all appears to be working correctly in master and develop with gcc-4.9.0 and -std=gnu++1y so closing down.
Could you try this program with the gcc that you are using, please?
Thanks!