[cfe-dev] When does ~decltype(expr) make sense ?

David Blaikie dblaikie at gmail.com
Sun Feb 22 15:24:19 PST 2015


On Sun, Feb 22, 2015 at 2:33 PM, Manasij Mukherjee <manasij7479 at gmail.com>
wrote:

>
>
>> 5.1.1 [expr.prim.general] in paragraph 8 states that "The form ~
>> decltype-specifier also denotes the destructor, but it shall not be used as
>> the unqualified-id in a qualified-id."
>>
>> I implemented this a while ago, but it looks like (r146155) it was for
>> expressions (x.~decltype(*x)(), for example) not necessarily for dtor
>> declarations.
>>
>> I do not clearly understand what this sentence implies.
> Could you elaborate?
>
> Also, if the meaning is as you interpreted it, what is the rationale for
> allowing x.~decltype(*x)() ?
>

Not quite sure I understand this question (though I did make a mistake in
that example, should've been x->~decltype(*x)())

5.1.1 talks about how ~decltype(...) is a valid unqualified id, except in
the case of a qualified id (ie, you can't write "x::y::~decltype(...)"). So
that's how x->~decltype(*x)() is valid, as far as I see/read/understand it
- wherever you can use an unqualified-id that would name a dtor, you can
use ~decltype(...) too (ecxept in the qualified-id case).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150222/2b998577/attachment.html>


More information about the cfe-dev mailing list