teak-llvm/clang/test/SemaCXX/cast-lvalue-to-rvalue-reference.cpp
Davide Italiano a2275910a7 [Sema] If lvalue to rvalue reference cast is valid don't emit diagnostic.
In the test, y1 is not reference compatible to y2 and we currently assume
the cast is ill-formed so we emit a diagnostic. Instead, in order to honour
the standard, if y1 it's not reference-compatible to y2 then it can't be
converted using a static_cast, and a reinterpret_cast should be tried instead.
Richard Smith provided the correct interpretation of the standard and
explanation about the subtle difference between "can't be cast" and "the cast
is ill-formed". The former applies in this case.

PR:		23802
llvm-svn: 241998
2015-07-12 22:10:56 +00:00

9 lines
170 B
C++

// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
// expected-no-diagnostics
struct S {};
int x;
S&& y1 = (S&&)x;
S&& y2 = reinterpret_cast<S&&>(x);
S& z1 = (S&)x;