<div dir="ltr">On Wed, Aug 21, 2013 at 1:53 AM, Konstantin Tokarev <span dir="ltr"><<a href="mailto:annulen@yandex.ru" target="_blank">annulen@yandex.ru</a>></span> wrote:<br><div class="gmail_extra"><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"><br>
20.08.2013, 22:19, "Eli Friedman" <<a href="mailto:eli.friedman@gmail.com">eli.friedman@gmail.com</a>>:<br>
<div><div class="h5">> On Tue, Aug 20, 2013 at 10:57 AM, Konstantin Tokarev <<a href="mailto:annulen@yandex.ru">annulen@yandex.ru</a>> wrote:<br>
>> Hi all,<br>
>><br>
>> In the code fragment [1] ConditionalOperator is lvalue in clang AST, while in code fragments [2] and [3] it is reported as rvalue. The difference is that [2] declares DEFAULT_WEIGHT as enum constant, and [3] declares it as int constant.<br>

>><br>
>> Is this behavior correct? Why in [1] ConditionalOperator is not rvalue too?<br>
> This behavior is correct.  It isn't an rvalue because the C++ standard says it's an lvalue.<br>
<br>
</div></div>Thank you!<br>
<br>
Is it solely because of 3.10.5 ("An expression which holds a temporary object resulting from a cast to a nonreference type is an rvalue"), or am I missing something else?<br>
<span class=""><font color="#888888"><br><br></font></span></blockquote><div>Try [expr.cond]p3.<br><br>-Eli <br></div></div></div></div>