std::experimental::filesystem missing exception specification noexcept build error regression (libstdc++-11-dev 11.3.0-1ubuntu1~22.04 upgrade)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
gcc-11 (Ubuntu) |
Expired
|
Undecided
|
Unassigned |
Bug Description
Summary:
On Ubuntu 22.04.1 LTS using clang 11, I'm newly (REGRESSION) getting build errors on std::experiment
.
.
.
In file included from .......
In file included from /usr/bin/
/usr/bin/
path::begin() const
This very likely has been introduced by (dpkg.log)
2022-10-27 13:18:37 upgrade libstdc+
Details:
No issues seen (working build) until very recently.
Analysis:
extraction of
libstdc+
( http://
usr/include/
has:
// iterators
class iterator;
typedef iterator const_iterator;
iterator begin() const;
.
.
.
inline path::iterator
path::begin() const
{
if (_M_type == _Type::_Multi)
return iterator(this, _M_cmpts.begin());
return iterator(this, false);
}
, as opposed to 11.3.0-
// iterators
class iterator;
typedef iterator const_iterator;
iterator begin() const noexcept;
.
.
.
inline path::iterator
path::begin() const
{
if (_M_type == _Type::_Multi)
return iterator(this, _M_cmpts.begin());
return iterator(this, false);
}
(witness "noexcept" specification newly added, but
INCONSISTENTLY:
at declaration location only, and missing at implementation site)
Apparently fixed by
git://gcc.
42eff613d0c10f "libstdc++: Add 'noexcept' to path::iterator members"
(but currently published for gcc >= 12 release tags only!).
A workaround might be
applying
-Wno-missing-
( https:/
in all std::experiment
Or being forced to
instead actively (source / config modification) switch to
std::filesystem (which
does not seem to have this INCONSISTENCY bug, in
/usr/include/
).
$ lsb_release -rd
Description: Ubuntu 22.04.1 LTS
Release: 22.04
$ apt-cache policy libstdc++-11-dev
libstdc++-11-dev:
Installed: 11.3.0-
Candidate: 11.3.0-
Version table:
*** 11.3.0-
500 http://
500 http://
100 /var/lib/
11.
500 http://
Thank you for all your awesome service efforts!
P.S.: I got
"In what package did you find this bug?"
"libstdc++-11-dev" does not exist in Ubuntu. Please choose a different package. If you're unsure, please select "I don't know"
( at https:/
Though libstdc++-11-dev clearly *is* a "package".
--> this process is overly confusing, thus
possibly should be corrected.
Solve this problem, please!!!!!!!!