The following code fails to compile on 3.4 and newer compilers: ------------------------------------------------- #include <functional>
struct less : public std::less<int> {}; #include <set> ------------------------------------------------- $ g++-3.4 -c test.cc In file included from /usr/lib/gcc/i686-pc-cygwin/3.4.0/include/c++/set:67, from test.cc:6: /usr/lib/gcc/i686-pc-cygwin/3.4.0/include/c++/bits/stl_set.h:69: error: `less' h as not been declared The problem appears related to strong using. This is a reduced, epurated testcase: ------------------------------------------------- namespace NB {} namespace NA { using namespace NB; } namespace NB { using namespace NA __attribute__ ((strong)); struct Foo {}; } struct Foo : NB::Foo {}; namespace NA { Foo a; } ------------------------------------------------- test.ii:17: error: `Foo' does not name a type (note: I found this bug while cleaning up the testcase in PR 15855). Jason: can you have a look at this please? -- Summary: [3.4/4.0 Regression] Strong using lookup conflicts Product: gcc Version: 4.0.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: giovannibajo at libero dot it CC: gcc-bugs at gcc dot gnu dot org,jason at redhat dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18604