diff options
author | emsr <emsr@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-02-07 14:27:45 +0000 |
---|---|---|
committer | emsr <emsr@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-02-07 14:27:45 +0000 |
commit | 9d8eb68081f898e225727d69da8212813f27e199 (patch) | |
tree | 8b380f6dd04c8f86fff867df6b7476c0aafed0a1 /libstdc++-v3 | |
parent | e8a419974488ebb2940c2cfa559261a655a53a2d (diff) | |
download | gcc-9d8eb68081f898e225727d69da8212813f27e199.tar.gz |
PR56193 - Wrong test operator for basic_ios in C++11.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195849 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/basic_ios.h | 5 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/27_io/basic_ios/pr56193.cc | 15 |
3 files changed, 26 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index a898d777372..3cc1eec2b11 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2013-02-06 Edward Smith-Rowland <3dw4rd@verizon.net> + + * include/bits/basic_ios.h: Replace operator void*() const + with explicit operator bool() const in C++11 and greater. + * testsuite/27_io/basic_ios/pr56193.cc: New file. + 2013-02-04 Dodji Seketeli <dodji@redhat.com> Add missing explicit instantiation for std::lower_bound template diff --git a/libstdc++-v3/include/bits/basic_ios.h b/libstdc++-v3/include/bits/basic_ios.h index b78b464ba02..bda40f0a7a3 100644 --- a/libstdc++-v3/include/bits/basic_ios.h +++ b/libstdc++-v3/include/bits/basic_ios.h @@ -112,8 +112,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 diff --git a/libstdc++-v3/testsuite/27_io/basic_ios/pr56193.cc b/libstdc++-v3/testsuite/27_io/basic_ios/pr56193.cc new file mode 100644 index 00000000000..48c95829f9e --- /dev/null +++ b/libstdc++-v3/testsuite/27_io/basic_ios/pr56193.cc @@ -0,0 +1,15 @@ +// { dg-do compile } +// { dg-options "-std=gnu++11" } +// Copyright (C) 2013 Free Software Foundation, Inc. + +#include <iostream> + +// PR libstdc++/56193 + +int +test01() +{ + std::cout << std::cout; // { dg-error "cannot bind" } +} + +// { dg-error "initializing argument" "" { target *-*-* } 602 } |