This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

V3 PATCH: char_traits<char>::int_type is int (was: Re: streambuf compilation problem)


Craig Rodrigues <rodrigc@mediaone.net> writes:

| [1  <text/plain; us-ascii (7bit)>]
| Hi,
| 
| I am using:
| % g++ -v
| Reading specs from /usr/local/bin/../lib/gcc-lib/i386-pc-linux-gnu/2.97/specs
| Configured with: ../configure --prefix=/tmp/gcc-20010210-root/usr/local --enable-shared --enable-threads --disable-checking i386-pc-linux-gnu : (reconfigured)
| gcc version 2.97 20010210 (experimental)
| 
| under Redhat Linux 7.0.
| 
| The attached test program fails compilation with the following error:
| 
| a.cc:7: conflicting return type specified for `virtual int mybuf::underflow()'
| /usr/local/include/g++-v3/bits/std_streambuf.h:475:   overriding `typename
|    _Traits::int_type std::basic_streambuf<_CharT, _Traits>::underflow() [with
|    _CharT = char, _Traits = std::char_traits<char>]'                         
| 
| 
| Is this a problem in libstdc++?

Yes, it is.  Fixed with this patch.

-- Gaby
CodeSourcery, LLC                       http://www.codesourcery.com

 2001-02-11  Gabriel Dos Reis  <gdr@codesourcery.com>
 
 	* include/bits/char_traits.h char_traits<char>::int_type: Change
 	to `int' to match 21.1.3.1/2.
 
 	* testsuite/21_strings/char_traits-int_type.C: New test.
 
Index: include/bits/char_traits.h
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/include/bits/char_traits.h,v
retrieving revision 1.2
diff -p -r1.2 char_traits.h
*** char_traits.h	2001/01/12 21:24:15	1.2
--- char_traits.h	2001/02/11 04:42:33
*************** namespace std {
*** 150,156 ****
      struct char_traits<char>
      {
        typedef char 		char_type;
!       typedef unsigned int 	int_type;
        typedef streampos 	pos_type;
        typedef streamoff 	off_type;
        typedef mbstate_t 	state_type;
--- 150,156 ----
      struct char_traits<char>
      {
        typedef char 		char_type;
!       typedef int 	        int_type;
        typedef streampos 	pos_type;
        typedef streamoff 	off_type;
        typedef mbstate_t 	state_type;
Index: testsuite/21_strings/char_traits-int_type.C
===================================================================
RCS file: char_traits-int_type.C
diff -N char_traits-int_type.C
*** /dev/null	Tue May  5 13:32:27 1998
--- char_traits-int_type.C	Sat Feb 10 20:42:33 2001
***************
*** 0 ****
--- 1,33 ----
+ // 2001-02-11 gdr
+ // Origin: Craig Rodrigues <rodrigc@mediaone.net>
+ 
+ // Copyright (C) 1999, 2000 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.
+ 
+ // 21.1.3.1/2: char_traits<char>::int_type == int
+ 
+ #include <string>
+ 
+ int main()
+ {
+   // dg-options -ansi -pedantic-errors
+   std::char_traits<char>::int_type* p = 0;
+   int* q = p;                   // dg-do compile
+ 
+   return 0;
+ }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]