Why is the result of "decltype(i+j)" not an rvalue reference?
<p>I'm trying to come up a simple example for an operation that results in a rvalue.</p>

<p>This test case should have worked, but surprisingly (to me), the result of adding two <code>int</code>s is not an rvalue (reference). What am I missing here?</p>

<pre><code>void test(int i, int j)
{
    // this assert should pass, but fails:
    static_assert(std::is_same&lt;decltype(i + j), int&amp;&amp;&gt;(), "i + j should be a rvalue"); 
    // this assert passed, but should fail:
    static_assert(std::is_same&lt;decltype(i + j), int&gt;(), "this assert should fail...");
}
</code></pre>