
"Peter Dimov" <pdimov@mmltd.net> writes: | Gabriel Dos Reis wrote: | > "Giovanni Bajo" <giovannibajo@libero.it> writes: | > | >> Gennaro Prota wrote: | >> | >>> Do you know why? Is he proposing some change in the CWG? | >> | >> I guess it's just a consequence of the GCC bugreport, and Gaby | >> raising the issue with the CWG. | > | > Yes, that is the case. But the issues are slightly different. | > A long time ago, the committee decided, after debate, that member | > names | > hide enclosing template-parameters. The fact that names from base | > classes can hide template-parameters too comes as a -logical- | > consequence from that general rule and the principle that scopes | > nests. | | This however runs contrary to the principle that I, as a user, should be | able to explicitly disambiguate; since I can write a qualified name for a | class member but not for a template parameter, it naturally follows that | template parameters should hide class members and not vice versa. That does not follow. Your raisoning is based on the assumption that there is an ambiguity, but there is none.
From my perspective, I think the construct should have been made invalid when the choice was made. The reason is that you have two conflicting reasonable principles here.
-- Gaby