https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43282
Bug 43282 depends on bug 15272, which changed state.
Bug 15272 Summary: lookup, dependent base
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15272
What|Removed |Added
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43282
Andrew Pinski pinskia at gcc dot gnu.org changed:
What|Removed |Added
Status|UNCONFIRMED |RESOLVED
--- Comment #8 from schaub-johannes at web dot de 2010-06-06 01:01 ---
(In reply to comment #6)
Dup of bug 15272.
I don't know about the internals of GCC, but from a Standard point of view, the
code in that bug shows a different problem than the code in my bug report.
In my bug
--- Comment #7 from schaub-johannes at web dot de 2010-03-08 23:41 ---
I've digged this up from an early draft ('96:
http://ra.dkuug.dk/JTC1/SC22/WG21/docs/wp/txt/jun96/body.txt), '98 and '03).
Each has different rules. In fact, C++98 would accept comment#3's code.
- '96pre-standard
--- Comment #1 from bangerth at gmail dot com 2010-03-07 23:41 ---
The error message I get is this:
g/x c++ -c x.cc
x.cc: In member function 'void BarT::bar() [with T = A::Baz]':
x.cc:18: instantiated from here
x.cc:10: error: no matching function for call to 'BarA::Baz::foo(A::Baz)'
--- Comment #2 from schaub-johannes at web dot de 2010-03-08 00:01 ---
The point is that the scope of the base class is not examined even during
instantiation, so you cannot find the class member function and ADL finds
A::foo instead. The Standard says at 14.6.2/3:
In the definition of
--- Comment #3 from bangerth at gmail dot com 2010-03-08 00:19 ---
But that would mean that the following code should be invalid
because the compiler should never find HasFooT::foo even at
instantiation time:
-
templatetypename T
struct HasFoo {
void foo(T) { }
};
--- Comment #4 from schaub-johannes at web dot de 2010-03-08 00:26 ---
Yes, this is the consequence. You have to add this- or Bar:: to use
another form of lookup (qualified or class-member access) or use a
using-declaration to bring the name in scope (using HasFooT::foo;).
I can't say
--- Comment #5 from bangerth at gmail dot com 2010-03-08 00:36 ---
OK, so the question is whether the testcase in comment #3 should be rejected
based on the wording of 14.6.2/3.
Jason, as our resident language lawyer, would you mind commenting?
W.
--
bangerth at gmail dot com
--- Comment #6 from pinskia at gcc dot gnu dot org 2010-03-08 01:06 ---
Dup of bug 15272.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43282
10 matches
Mail list logo