[Bug c++/21615] Argument-dependent name lookup associated namespace search bug
--- Comment #5 from maxim dot yegorushkin at gmail dot com 2006-07-25 14:18 --- Hi there, Could you guys take a look at Pavel's comment. It looks very reasonable. -- maxim dot yegorushkin at gmail dot com changed: What|Removed |Added Status|RESOLVED|REOPENED Resolution|INVALID | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21615
[Bug c++/21615] Argument-dependent name lookup associated namespace search bug
--- Comment #6 from pinskia at gcc dot gnu dot org 2006-07-25 14:23 --- Fixed in 4.1.0. With many other bugs. -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Status|REOPENED|RESOLVED Resolution||FIXED Target Milestone|--- |4.1.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21615
[Bug c++/21615] Argument-dependent name lookup associated namespace search bug
--- Comment #3 from hbgku6602 at sneakemail dot com 2006-07-24 15:30 --- (In reply to comment #1) All gcc versions I have take the template in namespace odd, and so does icc in strict mode. I see nothing in 3.4.2 that should prevent this from happening. What is relevant here is that the using declaration inside the function introduces a name into the innermost namespace, thus preventing name lookup from even looking outside the function. It would have been so say in case of int. But since A is a class-type, it has associated namespace odd, and according to 3.4.2/2a odd::f will be included in the set of declarations regardless of visibility of odd::f by ordinary rules. 3.4.2/1 When an unqualified name is used as the postfix-expression in a function call (5.2.2), other namespaces not considered during the usual unqualified lookup (3.4.1) may be searched, and namespace-scope friend function declarations (11.4) not otherwise visible may be found. 3.4.2/2a If the ordinary unqualified lookup of the name finds the declaration of a class member function, the associated namespaces and classes are not considered. Otherwise the set of declarations found by the lookup of the function name is the union of the set of declarations found using ordinary unqualified lookup and the set of declarations found in the namespaces and classes associated with the argument types. -- hbgku6602 at sneakemail dot com changed: What|Removed |Added CC||hbgku6602 at sneakemail dot ||com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21615
[Bug c++/21615] Argument-dependent name lookup associated namespace search bug
--- Comment #4 from pinskia at gcc dot gnu dot org 2006-07-24 15:33 --- (In reply to comment #3) It would have been so say in case of int. There is a defect report about the case of int anyways. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21615
[Bug c++/21615] Argument-dependent name lookup associated namespace search bug
--- Additional Comments From maxim dot yegorushkin at gmail dot com 2005-05-18 08:17 --- (In reply to comment #1) All gcc versions I have take the template in namespace odd, and so does icc in strict mode. I see nothing in 3.4.2 that should prevent this from happening. What is relevant here is that the using declaration inside the function introduces a name into the innermost namespace, thus preventing name lookup from even looking outside the function. If you don't want to have this happening, then you need to put the using declaration into the same scope as the declaration of the other function 'f'. Thank you for your illuminating answer. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21615
[Bug c++/21615] Argument-dependent name lookup associated namespace search bug
-- What|Removed |Added Severity|critical|normal Keywords||rejects-valid Known to fail||3.3.3 3.4.0 4.0.0 4.1.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21615
[Bug c++/21615] Argument-dependent name lookup associated namespace search bug
--- Additional Comments From bangerth at dealii dot org 2005-05-17 16:37 --- All gcc versions I have take the template in namespace odd, and so does icc in strict mode. I see nothing in 3.4.2 that should prevent this from happening. What is relevant here is that the using declaration inside the function introduces a name into the innermost namespace, thus preventing name lookup from even looking outside the function. If you don't want to have this happening, then you need to put the using declaration into the same scope as the declaration of the other function 'f'. W. -- What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21615