<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJylVcuSqzYQ_Rq86TIFwvixYOEZ31vJJllkfkBIjdEtgbiS8Izz9WmBMdhxUqmKi7KFpD46ffqoXRp5LaJtcn9E10XJKUqOztteeDhGu7dxAuhzjNg-Yocwtzs9Th_hYjT3SmPEtrc99w3h47yMsiM9wvQ-yt7Dw5gw3TXK31saRtki4o4fBtOCaj00XLV3FjAFTGfDEfgCZx7PeItkbzP5G351Nham9fjlo_wEHbstZd_g1xacaRBuyy5i78BbCCHonDItmFZfgXcdcuugMhaUd-CURMCqQuFdDH_0on6KUg4E1xolcJDKCW4lyvWF6x4X22L4qBG4tfy69mbdGdIALUFJqPpWeNqynHeeVggpsL2gDQiOohFa4wNFrVDGEDGq2DEA6-G8gGDHk-e4QPAWAaoaThwSpbGv8SkTDucRCkx1L8b6Z8-1qgKAv3Y4QCgftpt22BhwKqO1-VTteSQVLDJJH9RfA5UnjmOqytO8kusFh2CJWx07q5pYyRBBJmHvy7iXcHOpR0qE1RmCLSnbUQ-PkrD-lnM3ihYcMbIP0R6bzlhur2RVKokiCf7koU6vtR0DY4AXfIjrb8YjZKTKRO6JQwuz7kJz5wapAyNSuumdh5pfSPr5hoQbF6iMF5zc6g2oVvmBKMJjCqb8QQamST7ULSzS6b3208qtiv_iI7LbNxbtk-iwASQHkBNxln_5nb-FqDhgDZcwm5X4WBw8nvgopkSSulFtuE1CGCvJUCGxB4eB7TW6_-6w3ynafio3ylnBB2kZyv6o8xOZsZ5B5PWs6ivlKmuaYfp2c25GWCryC7ZiPoOaRUie-tbLfrtNwNWm1xJKckPpkCpRanwAXMkik4fswFe897WxxVdTJ3marnqri9r7blCHfafnrHzdl9QUG3rR-jL9rDtrAn96Vc71pCf7nrPD4bCqC77Zp1LkZcLlluEm3e0zlpUHIcQ2TTcbvtK8RO0KEpz6fYufMECE3p-fVv-fgSpYwliSJnnCNts8jXdSbGSyK9OcH-RelNEmQfoD0XHAiY09r2wxQJb92dGiVo669X2RyqzOLeJAmBh65TUWp6lZw3Oz_ofmN_tlqtDcGcLVfL5uqyGtYsjpLzafbFA>52999</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Discarded value expression of volatile-qualified class type should materialize a temporary object
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          xmh0511
      </td>
    </tr>
</table>

<pre>
    ````cpp
struct A{
    A(){}
    A(A volatile&){
        std::cout<<"copy\n";
    }
};
int main(){ 
  volatile A a;
  a;
}
````
[expr.context] p2
> In some contexts, an expression only appears for its side effects. Such an expression is called a discarded-value expression. The array-to-pointer and function-to-pointer standard conversions are not applied. **The lvalue-to-rvalue conversion is applied if and only if the expression is a glvalue of volatile-qualified type and it is one of the following**:
>> - [...]
>> - id-expression ([expr.prim.id]),
>>- [...]
>
> If the (possibly converted) expression is a prvalue, **the temporary materialization conversion is applied**.  
>
> [Note 3: If the expression is an lvalue of class type, it must have a volatile copy constructor to initialize the temporary object that is the result object of the lvalue-to-rvalue conversion. — end note]


[conv.lval] p3
> The result of the conversion is determined according to the following rules:
>> - [...]
>> - Otherwise, if T has a class type, the conversion **copy-initializes the result object from the glvalue**.

Hence, the call of `A(A volatile&)` should be observable.


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNVcGSmzgQ_Rp86TIFwtjjAwfPOKnkkj1kfkBIjdGWQEQSnvF-fVpgDHa8W0tRNkjq169fP4nSyEsRbZPbLbouSo5RcnDe9sLDIdq9jgNA1yFiLxHbh7Hd8X74AGejuVcaI7a9rrktCJfzMsoOdAvT-yh7CzdjwnSXKH9r6THKFhE3_PAwTajWQ8NVe2MBU8CUGw7AFzjz84y3KPY6kr_iZ2djYVqPnz7Kj9Cx61T2Bb634EyDcJ12EXsD3kIIQeeUacG0-gK865BbB5WxoLwDpyQCVhUK72L42Yv6IUo5EFxrlMBBKie4lSjXZ657XCyL4b1G4Nbyy9qbdWdIA7QEJaHqW-FpyXLceZohpMD2jDYgOIpGaI0PFLVCGUPEqGOHAKyHfAHBjpnnuEDwGgGqGjIOhdKzr_GhEg6nEQpMdWvG-lfPtaoCgL90OEAoH5abdlgYcCqjtflQ7WkkFSwySR_UXwO1J45j6srDuJLrBYdgiWsfO6uaWMkQQSZhb8u4p3Bzq0dKhNUZgi2p2lEPj5Kw_qi5G0ULjhjZh2iPTWcstxeyKrVEkQT_8NCn59qOgTHAEz7E9YfxCBmpMpF74NDCrLvQ3LlB6sCIlG5656HmZ5J-3iFhxwUq4wYnt3oDqlV-IIpwX4Ip_yYD0yAf-hYmKXuv_TRz7eJ_-Ijs9oVFL0m03wCSA8iJOMu__M1fQ1QcsIZNmM1KvC8SjxnvxZRIUjeqDbtJCGMlGSoUducwsL1G9_8d9hdF2w_lRjkreCctQ9vvdX4gM_YziLyeVX2mXGVNMwxfd87VCEtFvmEr5hx0WITi6dx6et5uE3C16bWEktxQOqROlBrvAFeyyOQ-2_OVV15jcZzOHXg8d_5lH8-lT8lmkweXPTpn1Vtd1N53g-zsK90n5eu-pNO2oRetz9PfurMmhNCrcq6nRrGvOdvv96u62MqXfLeRmczyjWBitxe42aVplqR5ymQmVpqXqF1BnaQPSYsfMECEj0p-XKmCJYwlaZInbLPN03gnxUYmuzLN-V6-iDLaJEjfFR0HHrGxp5UtBkplf3I0qZWjQ_w2SRKoU4s4pCN83vva2OKzqZM8TVdD6mKg_hvc6VZM">