aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@unitus.it>2003-02-07 01:26:44 +0100
committerPaolo Carlini <paolo@gcc.gnu.org>2003-02-07 00:26:44 +0000
commitafb6c265b7b2ddf4723a822fb28d1266d80c9a84 (patch)
tree6546b75bd11380b637c38520369311f88d45a89a /libstdc++-v3
parentf6358ad6daf27775406ebdef61e744f3983a2a4f (diff)
downloadgcc-afb6c265b7b2ddf4723a822fb28d1266d80c9a84.zip
gcc-afb6c265b7b2ddf4723a822fb28d1266d80c9a84.tar.gz
gcc-afb6c265b7b2ddf4723a822fb28d1266d80c9a84.tar.bz2
re PR libstdc++/9562 (ostream::sentry::operator bool () should be const)
2003-02-06 Paolo Carlini <pcarlini@unitus.it> PR libstdc++/9562 * include/std/std_istream.h (basic_istream::sentry::operator bool()): Make const. * include/std/std_ostream.h (basic_ostream::sentry::operator bool()): Likewise. * testsuite/27_io/istream_sentry.cc (test03): Add. * testsuite/27_io/ostream_sentry.cc: Add. From-SVN: r62508
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog10
-rw-r--r--libstdc++-v3/include/std/std_istream.h2
-rw-r--r--libstdc++-v3/include/std/std_ostream.h2
-rw-r--r--libstdc++-v3/testsuite/27_io/istream_sentry.cc16
-rw-r--r--libstdc++-v3/testsuite/27_io/ostream_sentry.cc53
5 files changed, 80 insertions, 3 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 716943f..ed3e31e 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,15 @@
2003-02-06 Paolo Carlini <pcarlini@unitus.it>
+ PR libstdc++/9562
+ * include/std/std_istream.h
+ (basic_istream::sentry::operator bool()): Make const.
+ * include/std/std_ostream.h
+ (basic_ostream::sentry::operator bool()): Likewise.
+ * testsuite/27_io/istream_sentry.cc (test03): Add.
+ * testsuite/27_io/ostream_sentry.cc: Add.
+
+2003-02-06 Paolo Carlini <pcarlini@unitus.it>
+
PR libstdc++/9548
Implement resolution of DR 231 (Ready)
* include/bits/locale_facets.h (__num_base::_S_format_float):
diff --git a/libstdc++-v3/include/std/std_istream.h b/libstdc++-v3/include/std/std_istream.h
index 7e05032..aab3db3 100644
--- a/libstdc++-v3/include/std/std_istream.h
+++ b/libstdc++-v3/include/std/std_istream.h
@@ -620,7 +620,7 @@ namespace std
* For ease of use, sentries may be converted to booleans. The
* return value is that of the sentry state (true == okay).
*/
- operator bool() { return _M_ok; }
+ operator bool() const { return _M_ok; }
private:
bool _M_ok;
diff --git a/libstdc++-v3/include/std/std_ostream.h b/libstdc++-v3/include/std/std_ostream.h
index 9d1c1f6..9f7c386 100644
--- a/libstdc++-v3/include/std/std_ostream.h
+++ b/libstdc++-v3/include/std/std_ostream.h
@@ -394,7 +394,7 @@ namespace std
* For ease of use, sentries may be converted to booleans. The
* return value is that of the sentry state (true == okay).
*/
- operator bool()
+ operator bool() const
{ return _M_ok; }
};
diff --git a/libstdc++-v3/testsuite/27_io/istream_sentry.cc b/libstdc++-v3/testsuite/27_io/istream_sentry.cc
index 8ff446f..faf8cfe 100644
--- a/libstdc++-v3/testsuite/27_io/istream_sentry.cc
+++ b/libstdc++-v3/testsuite/27_io/istream_sentry.cc
@@ -65,7 +65,7 @@ test02()
{
using namespace std;
istringstream in("80.21 56.89 12.3");
- bool test = true;
+ bool test = true;
int i = 0;
double x;
@@ -79,9 +79,23 @@ test02()
VERIFY( i == 3 );
}
+// libstdc++/9562
+void
+test03()
+{
+ bool test = true;
+
+ std::stringbuf strbuf01;
+ std::istream strm1(&strbuf01);
+ const std::istream::sentry sentry1(strm1);
+
+ VERIFY( bool(sentry1) == false );
+}
+
int main()
{
test01();
test02();
+ test03();
return 0;
}
diff --git a/libstdc++-v3/testsuite/27_io/ostream_sentry.cc b/libstdc++-v3/testsuite/27_io/ostream_sentry.cc
new file mode 100644
index 0000000..cba75f2
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/ostream_sentry.cc
@@ -0,0 +1,53 @@
+// 2003-02-06 Paolo Carlini <pcarlini@unitus.it>
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+// 27.6.2.3 class basic_ostream::sentry
+
+#include <ostream>
+#include <sstream>
+#include <testsuite_hooks.h>
+
+// libstdc++/9562
+void
+test01()
+{
+ bool test = true;
+
+ std::stringbuf strbuf01;
+ std::ostream strm1(&strbuf01);
+ const std::ostream::sentry sentry1(strm1);
+
+ VERIFY( bool(sentry1) == true );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}