]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Add C++11 member functions for ios::failure in old ABI
authorJonathan Wakely <jwakely@redhat.com>
Thu, 8 Oct 2020 13:03:52 +0000 (14:03 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Tue, 20 Oct 2020 17:04:45 +0000 (18:04 +0100)
commit34b80171b2f6a691d1142a26df60ef69d29b1bf8
treec821f037e8dc97e992524e7e0a1c7af785390acf
parent84b3d60d4f5e354d36af6eacb7d0741ca02813a9
libstdc++: Add C++11 member functions for ios::failure in old ABI

The new constructors that C++11 added to std::ios_base::failure were
missing for the old ABI. This adds them, but just ignores the
std::error_code argument (because there's nowhere to store it).

This also adds a code() member, which should be provided by the
std::system_error base class, but that base class isn't present in the
old ABI.

This allows the old ios::failure to be used in code that expects the new
API, although with reduced functionality.

libstdc++-v3/ChangeLog:

* include/bits/ios_base.h (ios_base::failure): Add constructors
takeing error_code argument. Add code() member function.
* testsuite/27_io/ios_base/failure/cxx11.cc: Allow test to
run for the old ABI but do not check for derivation from
std::system_error.
* testsuite/27_io/ios_base/failure/error_code.cc: New test.

(cherry picked from commit f997b67550144c6c0562f94c9b9cb932125d0444)
libstdc++-v3/include/bits/ios_base.h
libstdc++-v3/testsuite/27_io/ios_base/failure/cxx11.cc
libstdc++-v3/testsuite/27_io/ios_base/failure/error_code.cc [new file with mode: 0644]