[Bug c++/38087] Pseudo destructor call
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38087 Eric Gallager changed: What|Removed |Added Keywords||accepts-invalid Status|UNCONFIRMED |NEW Last reconfirmed||2017-08-17 CC||egallager at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #4 from Eric Gallager --- Redoing lost comments: https://gcc.gnu.org/ml/gcc-bugs/2017-08/msg01624.html Eric Gallager changed: What|Removed |Added Status|UNCONFIRMED |WAITING Last reconfirmed||2017-08-14 CC||egallager at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #4 from Eric Gallager --- (In reply to Andrew Pinski from comment #1) > I still think this is valid code ... There are defect reports against this > area too. Which ones do you mean? https://gcc.gnu.org/ml/gcc-bugs/2017-08/msg01637.html Jonathan Wakely changed: What|Removed |Added Keywords||accepts-invalid Status|WAITING |NEW --- Comment #5 from Jonathan Wakely --- There's https://wg21.link/cwg555 but I don't think it changes anything here. [expr.pseudo] definitely doesn't apply, as that only applies to non-class types. (The bug title is wrong for the same reason, this is a destructor call, not a pseudo destructor call.) The current wording in [basic.lookup.classref] says "At least one of the lookups shall find a name that refers to cv T." The object expression has type C, but the lookup result for B does not find that type, so the code is invalid.
[Bug c++/38087] Pseudo destructor call
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38087 Jonathan Wakely changed: What|Removed |Added Keywords||accepts-invalid Status|WAITING |NEW --- Comment #5 from Jonathan Wakely --- There's https://wg21.link/cwg555 but I don't think it changes anything here. [expr.pseudo] definitely doesn't apply, as that only applies to non-class types. (The bug title is wrong for the same reason, this is a destructor call, not a pseudo destructor call.) The current wording in [basic.lookup.classref] says "At least one of the lookups shall find a name that refers to cv T." The object expression has type C, but the lookup result for B does not find that type, so the code is invalid.
[Bug c++/38087] Pseudo destructor call
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38087 Eric Gallager changed: What|Removed |Added Status|UNCONFIRMED |WAITING Last reconfirmed||2017-08-14 CC||egallager at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #4 from Eric Gallager --- (In reply to Andrew Pinski from comment #1) > I still think this is valid code ... There are defect reports against this > area too. Which ones do you mean?
[Bug c++/38087] Pseudo destructor call
--- Comment #3 from mrs at apple dot com 2008-11-12 18:33 --- I'm merely eching bits from the clang development list... Now they think the above doesn't apply, but 3.4.5p3 does: 3 If the unquali#64257;ed-id is #8764; type-name, the type-name is looked up in the context of the entire post#64257;x-expression. If the type T of the object expression is of a class type C, the type-name is also looked up in the scope of class C. At least one of the lookups shall #64257;nd a name that refers to (possibly cv-quali#64257;ed) T. :-) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38087
[Bug c++/38087] Pseudo destructor call
--- Comment #1 from pinskia at gcc dot gnu dot org 2008-11-12 00:32 --- I still think this is valid code ... There are defect reports against this area too. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38087
[Bug c++/38087] Pseudo destructor call
--- Comment #2 from pinskia at gcc dot gnu dot org 2008-11-12 00:35 --- See PR 12333 also. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38087