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