public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "nathan at gcc dot gnu dot org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/13590] [3.3/3.4/3.5 regression] Non-existing ambiguity when inhering through virtuals two identical using declarations.
Date: Fri, 05 Mar 2004 14:44:00 -0000	[thread overview]
Message-ID: <20040305144449.18991.qmail@sources.redhat.com> (raw)
In-Reply-To: <20040106205426.13590.boris@kolpackov.net>


------- Additional Comments From nathan at gcc dot gnu dot org  2004-03-05 14:44 -------
I am not conviced this code is valid. [10.2] describes member name lookup
in an MI lattice, and says that 'each declaration that was introduced by a
using-declaration is considered to be from each subobject of C that is of the
type containg the declaration descignated by the using declaration'. ... 'if the
resulting set of declarations are not all from sbobjects of the same type ...
there is an ambiguity'.  Whilst those rules make sense for data members, they do
not for function members.  The set of overloaded functions can include some from
a base, brought in by a using declaration, and some declared in the class
containing the using declaration [7.3.3]/12   If those from the base were
considered to actually be from the base, then we'd have a set from differnt
types, so be ambiguous.

Thus, I think we have to consider overloaded functions to be from the class
containing the using declaration (and not the class being used).  If that is the
case, then the code is ill-formed, even though both using declarations refer to
the same unambiguous base object.

The original testcase had added an overload on one path through the graph, if we
augment the case with an additional overload on the other path, it quite clearly
must be ambiguous (because it would be without the using declarations).

Wolfgang's reduced test case, with just using declarations it the other
interesting example.  If we treat this as ambiguous, then it appears that (in
other useages), we could use using declarations to resolve inherited member
ambiguities -- something expressly forbidden by [10.2] (footnote 96).  So this
argues that the reduced case should be well formed.

But, now we have some strangeness.  Whether a function using declaration's
naming class is the class of the using declaration of the class of the used
declaration depends on whether there are any additional overloads.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13590


  parent reply	other threads:[~2004-03-05 14:44 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-01-06 20:54 [Bug c++/13590] New: unexpected overload resolution boris at kolpackov dot net
2004-01-06 21:10 ` [Bug c++/13590] " bangerth at dealii dot org
2004-01-06 21:56 ` boris at kolpackov dot net
2004-01-06 23:00 ` bangerth at dealii dot org
2004-01-06 23:15 ` boris at kolpackov dot net
2004-01-07 14:01 ` bangerth at dealii dot org
2004-01-11  1:05 ` [Bug c++/13590] [3.3/3.4 regression] Non-existing ambiguity when inhering through virtuals two identical using declarations giovannibajo at libero dot it
2004-01-11  1:13 ` pinskia at gcc dot gnu dot org
2004-03-05 14:44 ` nathan at gcc dot gnu dot org [this message]
2004-03-05 14:56 ` [Bug c++/13590] [3.3/3.4/3.5 " giovannibajo at libero dot it
2004-03-09  7:40 ` mmitchel at gcc dot gnu dot org
2004-06-10 20:10 ` jason at gcc dot gnu dot org
2004-06-10 22:19 ` [Bug c++/13590] [3.3/3.4/3.5 regression] [DR39] " pinskia at gcc dot gnu dot org
2004-06-18 23:46 ` mmitchel at gcc dot gnu dot org
2004-08-03 14:31 ` boris at kolpackov dot net
2004-08-14  7:21 ` pinskia at gcc dot gnu dot org
2004-10-19 11:37 ` [Bug c++/13590] [3.3/3.4/4.0 " pinskia at gcc dot gnu dot org
2005-08-31 19:34 ` [Bug c++/13590] " redi at gcc dot gnu dot org
2005-08-31 19:35 ` pinskia at gcc dot gnu dot org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20040305144449.18991.qmail@sources.redhat.com \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).