summaryrefslogtreecommitdiffstats
path: root/clang/test/CXX/expr/expr.post/expr.static.cast/p3-0x.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-01-22 00:06:57 +0000
committerDouglas Gregor <dgregor@apple.com>2011-01-22 00:06:57 +0000
commit465184ae10e9ab0532cfe043d8a6b84d95c28b7f (patch)
treebd47a924c1eb7d01d9a16d8ed2c19c211a522bb8 /clang/test/CXX/expr/expr.post/expr.static.cast/p3-0x.cpp
parent3f9047e321040cd2bd215e6b29b3f7f26ba29aee (diff)
downloadbcm5719-llvm-465184ae10e9ab0532cfe043d8a6b84d95c28b7f.tar.gz
bcm5719-llvm-465184ae10e9ab0532cfe043d8a6b84d95c28b7f.zip
Teach static_cast and dynamic_cast about rvalue references.
llvm-svn: 124006
Diffstat (limited to 'clang/test/CXX/expr/expr.post/expr.static.cast/p3-0x.cpp')
-rw-r--r--clang/test/CXX/expr/expr.post/expr.static.cast/p3-0x.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/clang/test/CXX/expr/expr.post/expr.static.cast/p3-0x.cpp b/clang/test/CXX/expr/expr.post/expr.static.cast/p3-0x.cpp
new file mode 100644
index 00000000000..c10335183e2
--- /dev/null
+++ b/clang/test/CXX/expr/expr.post/expr.static.cast/p3-0x.cpp
@@ -0,0 +1,24 @@
+// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s
+
+// A glvalue of type "cv1 T1" can be cast to type "rvalue reference to
+// cv2 T2" if "cv2 T2" is reference-compatible with "cv1 T1" (8.5.3).
+struct A { };
+struct B : A { };
+
+template<typename T> T& lvalue();
+template<typename T> T&& xvalue();
+
+void test(A &a, B &b) {
+ A &&ar0 = static_cast<A&&>(a);
+ A &&ar1 = static_cast<A&&>(b);
+ A &&ar2 = static_cast<A&&>(lvalue<A>());
+ A &&ar3 = static_cast<A&&>(lvalue<B>());
+ A &&ar4 = static_cast<A&&>(xvalue<A>());
+ A &&ar5 = static_cast<A&&>(xvalue<B>());
+ const A &&ar6 = static_cast<const A&&>(a);
+ const A &&ar7 = static_cast<const A&&>(b);
+ const A &&ar8 = static_cast<const A&&>(lvalue<A>());
+ const A &&ar9 = static_cast<const A&&>(lvalue<B>());
+ const A &&ar10 = static_cast<const A&&>(xvalue<A>());
+ const A &&ar11 = static_cast<const A&&>(xvalue<B>());
+}
OpenPOWER on IntegriCloud