c++/8448: Regression from gcc 2.96 concerning nested namespaces

bagnara@cs.unipr.it bagnara@cs.unipr.it
Mon Nov 4 06:56:00 GMT 2002


>Number:         8448
>Category:       c++
>Synopsis:       Regression from gcc 2.96 concerning nested namespaces
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Nov 04 06:56:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Roberto Bagnara
>Release:        3.2
>Organization:
>Environment:
RedHat 8.0
Linux zoltan.unisuv.it 2.4.19 #31 Mon Oct 28 14:17:54 CET 2002 i686 athlon i386
GNU/Linux
>Description:
The attached program shows a problem with nested namespaces.
An output operator is not "seen" if it is within a nested
namespace.  The attached program compiles fine with gcc
2.96 20000731 (Red Hat Linux 7.2 2.96-108.7.2),
with Comeau C/C++ 4.3.0.1, and with Intel's icc 6.0.1.
It does not compile, however, with gcc 3.2.

(I apologize for referring to gcc 2.96, a non-release,
but I do not have any other version of gcc handy.)
>How-To-Repeat:
$g++ -v
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2/specs
Configured with: ../gcc-3.2/configure --prefix=/usr/local
Thread model: posix
gcc version 3.2
$ g++ -c -W -Wall gccbug.cc
/usr/local/include/c++/3.2/bits/stream_iterator.h: In member function 
   `std::ostream_iterator<_Tp, _CharT, _Traits>& std::ostream_iterator<_Tp, 
   _CharT, _Traits>::operator=(const _Tp&) [with _Tp = 
   Parma_Polyhedra_Library::Constraint, _CharT = char, _Traits = 
   std::char_traits<char>]':
/usr/local/include/c++/3.2/bits/stl_algobase.h:228:   instantiated from `_OutputIter std::__copy(_InputIter, _InputIter, _OutputIter, std::input_iterator_tag) [with _InputIter = Parma_Polyhedra_Library::ConSys::const_iterator, _OutputIter = std::ostream_iterator<Parma_Polyhedra_Library::Constraint, char, std::char_traits<char> >]'
/usr/local/include/c++/3.2/bits/stl_algobase.h:260:   instantiated from `_OutputIter std::__copy_aux2(_InputIter, _InputIter, _OutputIter, __false_type) [with _InputIter = Parma_Polyhedra_Library::ConSys::const_iterator, _OutputIter = std::ostream_iterator<Parma_Polyhedra_Library::Constraint, char, std::char_traits<char> >]'
/usr/local/include/c++/3.2/bits/stl_algobase.h:303:   instantiated from `_OutputIter std::__copy_ni2(_InputIter, _InputIter, _OutputIter, __false_type) [with _InputIter = Parma_Polyhedra_Library::ConSys::const_iterator, _OutputIter = std::ostream_iterator<Parma_Polyhedra_Library::Constraint, char, std::char_traits<char> >]'
/usr/local/include/c++/3.2/bits/stl_algobase.h:323:   instantiated from `_OutputIter std::__copy_ni1(_InputIter, _InputIter, _OutputIter, __false_type) [with _InputIter = Parma_Polyhedra_Library::ConSys::const_iterator, _OutputIter = std::ostream_iterator<Parma_Polyhedra_Library::Constraint, char, std::char_traits<char> >]'
/usr/local/include/c++/3.2/bits/stl_algobase.h:349:   instantiated from `_OutputIter std::copy(_InputIter, _InputIter, _OutputIter) [with _InputIter = Parma_Polyhedra_Library::ConSys::const_iterator, _OutputIter = std::ostream_iterator<Parma_Polyhedra_Library::Constraint, char, std::char_traits<char> >]'
gccbug.cc:68:   instantiated from here
/usr/local/include/c++/3.2/bits/stream_iterator.h:141: no match for `
   std::basic_ostream<char, std::char_traits<char> >& << const 
   Parma_Polyhedra_Library::Constraint&' operator
/usr/local/include/c++/3.2/bits/ostream.tcc:55: candidates are: 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(std::basic_ostream<_CharT, 
   _Traits>&(*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, 
   _Traits = std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:77:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(std::basic_ios<_CharT, 
   _Traits>&(*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits 
   = std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:99:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(std::ios_base&(*)(std::ios_base&)) [with _CharT = char, 
   _Traits = std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:171:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(long int) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:208:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:146:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(bool) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/local/include/c++/3.2/ostream:104:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(short int) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/local/include/c++/3.2/ostream:115:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/local/include/c++/3.2/ostream:119:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(int) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/local/include/c++/3.2/ostream:130:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:234:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(long long int) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:272:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:298:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(double) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/local/include/c++/3.2/ostream:145:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(float) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:323:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(long double) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:348:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(const void*) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:120:                 
   std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, 
   _Traits>::operator<<(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = 
   char, _Traits = std::char_traits<char>]
/usr/local/include/c++/3.2/ostream:211:                 
   std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, char) [with _CharT = 
   char, _Traits = std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:500:                 
   std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, 
   _Traits>&, char) [with _Traits = std::char_traits<char>]
/usr/local/include/c++/3.2/ostream:222:                 
   std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, 
   _Traits>&, signed char) [with _Traits = std::char_traits<char>]
/usr/local/include/c++/3.2/ostream:227:                 
   std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, 
   _Traits>&, unsigned char) [with _Traits = std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:572:                 
   std::basic_ostream<_CharT, _Traits>& 
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*) [with 
   _CharT = char, _Traits = std::char_traits<char>]
/usr/local/include/c++/3.2/bits/ostream.tcc:622:                 
   std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, 
   _Traits>&, const char*) [with _Traits = std::char_traits<char>]
/usr/local/include/c++/3.2/ostream:246:                 
   std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, 
   _Traits>&, const signed char*) [with _Traits = std::char_traits<char>]
/usr/local/include/c++/3.2/ostream:251:                 
   std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, 
   _Traits>&, const unsigned char*) [with _Traits = std::char_traits<char>]
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="gccbug.cc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="gccbug.cc"

Ci8vIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gc2VlIHRoZSBwcm9ibGVtIGdvIGF3
YXkuCi8vI2RlZmluZSBOT19ORVNURURfTkFNRVNQQUNFCgojaW5jbHVkZSA8aW9zdHJlYW0+CiNp
bmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCm5hbWVzcGFjZSBQYXJtYV9Q
b2x5aGVkcmFfTGlicmFyeSB7CgpjbGFzcyBDb25zdHJhaW50IHsKfTsKCmNsYXNzIENvblN5cyB7
CnB1YmxpYzoKICBDb25TeXMoKTsKICBDb25TeXMoY29uc3QgQ29uU3lzJiBjcyk7CiAgfkNvblN5
cygpOwogIENvblN5cyYgb3BlcmF0b3I9KGNvbnN0IENvblN5cyYgeSk7CgogIGNsYXNzIGNvbnN0
X2l0ZXJhdG9yCiAgICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6Zm9yd2FyZF9pdGVyYXRv
cl90YWcsCgkJCSAgIENvbnN0cmFpbnQsCgkJCSAgIHZvaWQsCgkJCSAgIGNvbnN0IENvbnN0cmFp
bnQqLAoJCQkgICBjb25zdCBDb25zdHJhaW50Jj4gewogIHB1YmxpYzoKICAgIGNvbnN0X2l0ZXJh
dG9yKCk7CiAgICBjb25zdF9pdGVyYXRvcihjb25zdCBjb25zdF9pdGVyYXRvciYgeSk7CiAgICB+
Y29uc3RfaXRlcmF0b3IoKTsKICAgIGNvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgY29u
c3RfaXRlcmF0b3ImIHkpOwogICAgY29uc3QgQ29uc3RyYWludCYgb3BlcmF0b3IqKCkgY29uc3Q7
CiAgICBjb25zdCBDb25zdHJhaW50KiBvcGVyYXRvci0+KCkgY29uc3Q7CiAgICBjb25zdF9pdGVy
YXRvciYgb3BlcmF0b3IrKygpOwogICAgY29uc3RfaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpOwog
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiB5KSBjb25zdDsKICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBjb25zdF9pdGVyYXRvciYgeSkgY29uc3Q7CiAgfTsKCiAgY29u
c3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdDsK
fTsKCiNpZm5kZWYgTk9fTkVTVEVEX05BTUVTUEFDRQpuYW1lc3BhY2UgSU9fT3BlcmF0b3JzIHsK
I2VuZGlmCgovLyBnKysgc2VlbXMgbm90IHRvIHNlZSB0aGlzIGRlY2xhcmF0aW9uIGlmIE5PX05F
U1RFRF9OQU1FU1BBQ0UgaXMgbm90IGRlZmluZWQuCnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0mIHMsIGNvbnN0IENvbnN0cmFpbnQmIGMpOwoKI2lmbmRlZiBOT19ORVNURURf
TkFNRVNQQUNFCn0gLy8gbmFtZXNwYWNlIElPX09wZXJhdG9ycwojZW5kaWYKCn0gLy8gbmFtZXNw
YWNlIFBhcm1hX1BvbHloZWRyYV9MaWJyYXJ5CgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcg
bmFtZXNwYWNlIFBhcm1hX1BvbHloZWRyYV9MaWJyYXJ5OwoKI2lmbmRlZiBOT19ORVNURURfTkFN
RVNQQUNFCnVzaW5nIG5hbWVzcGFjZSBQYXJtYV9Qb2x5aGVkcmFfTGlicmFyeTo6SU9fT3BlcmF0
b3JzOwojZW5kaWYKCnZvaWQgZm9vKCkgewogIENvblN5cyBjczsKICBjb3B5KGNzLmJlZ2luKCks
IGNzLmVuZCgpLAogICAgICAgb3N0cmVhbV9pdGVyYXRvcjxDb25zdHJhaW50Pihjb3V0LCAiXG4i
KSk7Cn0K



More information about the Gcc-bugs mailing list