<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Feb 22, 2015 at 3:24 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Sun, Feb 22, 2015 at 2:33 PM, Manasij Mukherjee <span dir="ltr"><<a href="mailto:manasij7479@gmail.com" target="_blank">manasij7479@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><span><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br>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."<br><br>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.</div></div><br></div></div>
</blockquote></div></span>I do not clearly understand what this sentence implies.<br></div><div class="gmail_extra">Could you elaborate?<br><br></div><div class="gmail_extra">Also, if the meaning is as you interpreted it, what is the rationale for allowing x.~decltype(*x)() ?<br></div></div></blockquote></div></div><div><br>Not quite sure I understand this question (though I did make a mistake in that example, should've been x->~decltype(*x)())<br></div></div></div></div></blockquote><div><br></div><div>That doesn't work either: decltype(*x) is a reference type. It'd need to be something ridiculous like</div><div><br></div><div>  X x;</div><div>  x.~decltype(x)();</div><div>  new (&x) X;</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>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).</div></div></div></div></blockquote><div><br></div><div>Right; you can use ~decltype(...)() to invoke a destructor, but you can't use ~decltype to declare a destructor.</div></div></div></div>