From: Paolo Carlini Date: Fri, 7 Feb 2003 00:26:44 +0000 (+0100) Subject: re PR libstdc++/9562 (ostream::sentry::operator bool () should be const) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=afb6c265b7b2ddf4723a822fb28d1266d80c9a84;p=gcc.git re PR libstdc++/9562 (ostream::sentry::operator bool () should be const) 2003-02-06 Paolo Carlini 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 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 716943f133d..ed3e31ee805 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,13 @@ +2003-02-06 Paolo Carlini + + 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 PR libstdc++/9548 diff --git a/libstdc++-v3/include/std/std_istream.h b/libstdc++-v3/include/std/std_istream.h index 7e050322328..aab3db3d7c2 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 9d1c1f62c5a..9f7c386f181 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 8ff446f09fc..faf8cfe53d0 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 00000000000..cba75f250fa --- /dev/null +++ b/libstdc++-v3/testsuite/27_io/ostream_sentry.cc @@ -0,0 +1,53 @@ +// 2003-02-06 Paolo Carlini + +// 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 +#include +#include + +// 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; +}