re PR libstdc++/56193 (ios_base should replace operator void* with explicit operator bool in C++11 onwards.)
PR libstdc++/56193 * config/abi/pre/gnu.ver: Add new exports. * include/bits/basic_ios.h (basic_ios::operator bool): Define. * src/c++98/ios_locale.cc (basic_ios::operator void*): Instantiate. From-SVN: r215571
This commit is contained in:
parent
407f9471cd
commit
2d57872662
4 changed files with 20 additions and 0 deletions
|
@ -3,6 +3,11 @@
|
|||
* config/abi/pre/gnu.ver: Make GLIBCXX_3.4 patterns stricter so the
|
||||
new GLIBCXX_3.4.21 symbols don't match them.
|
||||
|
||||
PR libstdc++/56193
|
||||
* config/abi/pre/gnu.ver: Add new exports.
|
||||
* include/bits/basic_ios.h (basic_ios::operator bool): Define.
|
||||
* src/c++98/ios_locale.cc (basic_ios::operator void*): Instantiate.
|
||||
|
||||
2014-09-24 François Dumont <fdumont@gcc.gnu.org>
|
||||
|
||||
PR libstdc++/29988
|
||||
|
|
|
@ -1470,6 +1470,9 @@ GLIBCXX_3.4.21 {
|
|||
_ZNSoC[12]ERSd;
|
||||
_ZNSt13basic_ostreamIwSt11char_traitsIwEEC[12]ERSt14basic_iostreamIwS1_E;
|
||||
|
||||
# std::basic_ios::operator bool() const
|
||||
_ZNKSt9basic_iosI[cw]St11char_traitsI[cw]EEcvbEv;
|
||||
|
||||
} GLIBCXX_3.4.20;
|
||||
|
||||
|
||||
|
|
|
@ -113,8 +113,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
* This allows you to write constructs such as
|
||||
* <code>if (!a_stream) ...</code> and <code>while (a_stream) ...</code>
|
||||
*/
|
||||
#if __cplusplus >= 201103L
|
||||
explicit operator bool() const
|
||||
{ return !this->fail(); }
|
||||
#else
|
||||
operator void*() const
|
||||
{ return this->fail() ? 0 : const_cast<basic_ios*>(this); }
|
||||
#endif
|
||||
|
||||
bool
|
||||
operator!() const
|
||||
|
|
|
@ -54,5 +54,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
return __old;
|
||||
}
|
||||
|
||||
// Explicit instantiations for basic_ios are done in src/c++11/ios.cc
|
||||
// and so do not include this member, which is only defined for C++98.
|
||||
template basic_ios<char>::operator void*() const;
|
||||
#ifdef _GLIBCXX_USE_WCHAR_T
|
||||
template basic_ios<wchar_t>::operator void*() const;
|
||||
#endif
|
||||
|
||||
_GLIBCXX_END_NAMESPACE_VERSION
|
||||
} // namespace
|
||||
|
|
Loading…
Add table
Reference in a new issue