+2001-03-06 Benjamin Kosnik <bkoz@redhat.com>
+
+ libstdc++/2181
+ * include/bits/istream.tcc (basic_istream<_CharT, _Traits>::
+ operator>>(__istream_type& (*__pf)(__istream_type&)): Don't use
+ sentry.
+ (basic_istream<_CharT, _Traits>:: operator>>(__ios_type&
+ (*__pf)(__ios_type&)): Same.
+ (basic_istream<_CharT, _Traits>:: operator>>(ios_base&
+ (*__pf)(ios_base&))): Same.
+ * testsuite/27_io/istream_extractor_other.cc: Add tests.
+ * testsuite/27_io/istream_manip.cc (test01): Fix.
+
2001-03-06 Nathan Myers <ncm@cantrip.org>
Benjamin Kosnik <bkoz@redhat.com>
basic_istream<_CharT, _Traits>::
operator>>(__istream_type& (*__pf)(__istream_type&))
{
- sentry __cerb(*this, false);
- if (__cerb)
- {
- try {
- __pf(*this);
- }
- catch(exception& __fail){
- // 27.6.1.2.1 Common requirements.
- // Turn this on without causing an ios::failure to be thrown.
- this->setstate(ios_base::badbit);
- if ((this->exceptions() & ios_base::badbit) != 0)
- __throw_exception_again;
- }
- }
+ __pf(*this);
return *this;
}
basic_istream<_CharT, _Traits>::
operator>>(__ios_type& (*__pf)(__ios_type&))
{
- sentry __cerb(*this, false);
- if (__cerb)
- {
- try {
- __pf(*this);
- }
- catch(exception& __fail){
- // 27.6.1.2.1 Common requirements.
- // Turn this on without causing an ios::failure to be thrown.
- this->setstate(ios_base::badbit);
- if ((this->exceptions() & ios_base::badbit) != 0)
- __throw_exception_again;
- }
- }
+ __pf(*this);
return *this;
}
basic_istream<_CharT, _Traits>::
operator>>(ios_base& (*__pf)(ios_base&))
{
- sentry __cerb(*this, false);
- if (__cerb)
- {
- try {
- __pf(*this);
- }
- catch(exception& __fail){
- // 27.6.1.2.1 Common requirements.
- // Turn this on without causing an ios::failure to be thrown.
- this->setstate(ios_base::badbit);
- if ((this->exceptions() & ios_base::badbit) != 0)
- __throw_exception_again;
- }
- }
+ __pf(*this);
return *this;
}
// 1999-07-28 bkoz
-// Copyright (C) 1999 Free Software Foundation
+// Copyright (C) 1999, 2001 Free Software Foundation
//
// 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
statefail = std::ios_base::failbit;
stateeof = std::ios_base::eofbit;
- // template<_CharT, _Traits>
- // basic_istream& operator>>(basic_istream& (*pf) (basic_istream&))
-
- // template<_CharT, _Traits>
- // basic_istream& operator>>(basic_ios& (*pf) (basic_ios&))
-
- // template<_CharT, _Traits>
- // basic_istream& operator>>(ios_base& (*pf) (ios_base&))
// template<_CharT, _Traits>
// basic_istream& operator>>(basic_streambuf*)
return test;
}
+void test03()
+{
+ using namespace std;
+ bool test = true;
+
+ // template<_CharT, _Traits>
+ // basic_istream& operator>>(ios_base& (*pf) (ios_base&))
+ {
+ int i = 0;
+ std::istringstream iss(" 43");
+ iss >> std::noskipws >> i;
+ std::ios::iostate i3 = iss.rdstate();
+ VERIFY ( !iss ); //should set failbit
+ }
+
+ // template<_CharT, _Traits>
+ // basic_istream& operator>>(basic_ios& (*pf) (basic_ios&))
+
+ // template<_CharT, _Traits>
+ // basic_istream& operator>>(basic_istream& (*pf) (basic_istream&))
+}
+
+
int main()
{
test01();
test02();
+ test03();
return 0;
}
VERIFY( !iss02.eof() );
iss01 >> std::ws;
- VERIFY( iss01.fail() );
+ VERIFY( !iss01.fail() );
VERIFY( iss01.eof() );
#ifdef DEBUG_ASSERT