public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/94602] New: wrong semantic check to prvalue as decltype operand
@ 2020-04-15  6:15 frankhb1989 at gmail dot com
  0 siblings, 0 replies; only message in thread
From: frankhb1989 at gmail dot com @ 2020-04-15  6:15 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94602

            Bug ID: 94602
           Summary: wrong semantic check to prvalue as decltype operand
           Product: gcc
           Version: 9.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: frankhb1989 at gmail dot com
  Target Milestone: ---

Case:

struct S
{
    ~S() = delete;    
};
S f();
int main()
{
    using X = decltype(f()); // #1
    using Y = decltype(S{}); // #2
}

#2 is wrongly rejected in C++17 mode.

#1 is not ill-formed for the deleted destructor as per C++11
[dcl.type.simple]/5:

> ... in the case where the operand of a decltype-specifier
is a function call and the return type of the function is a class type, a
special rule (5.2.2) ensures that the return type is not required to be
complete (as it would be if the call appeared in a sub-expression or outside of
a
decltype-specifier) ... In particular, it is not necessary to allocate storage
for a temporary object or to enforce the semantic constraints associated with
invoking the type's destructor. ...

This rule is expanded by P0135R1 for cases like #2, which is adopted in C++17.

(See also P0929R2.)

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-04-15  6:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-15  6:15 [Bug c++/94602] New: wrong semantic check to prvalue as decltype operand frankhb1989 at gmail dot com

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).