rvalue_ref.pass.cpp revision 73d21a4f0774d3fadab98e690619a359cfb160a3
16d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)//===----------------------------------------------------------------------===//
26d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)//
36d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
46d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)//
56d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source
66d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)// License. See LICENSE.TXT for details.
76d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)//
86d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)//===----------------------------------------------------------------------===//
96d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)
106d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)// type_traits
116d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)
126d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)// rvalue_ref
136d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)
146d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include <type_traits>
156d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)
166d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)template <class T>
176d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)void test_rvalue_ref()
186d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles){
196d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    static_assert(!std::is_void<T>::value, "");
206d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    static_assert(!std::is_integral<T>::value, "");
216d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    static_assert(!std::is_floating_point<T>::value, "");
226d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    static_assert(!std::is_array<T>::value, "");
236d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    static_assert(!std::is_pointer<T>::value, "");
246d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    static_assert(!std::is_lvalue_reference<T>::value, "");
256d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    static_assert( std::is_rvalue_reference<T>::value, "");
266d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    static_assert(!std::is_member_object_pointer<T>::value, "");
276d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    static_assert(!std::is_member_function_pointer<T>::value, "");
286d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    static_assert(!std::is_enum<T>::value, "");
296d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    static_assert(!std::is_union<T>::value, "");
306d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    static_assert(!std::is_class<T>::value, "");
316d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    static_assert(!std::is_function<T>::value, "");
326d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)}
336d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdochint main()
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch{
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    test_rvalue_ref<int&&>();
386d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    test_rvalue_ref<const int&&>();
396d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#endif  // _LIBCPP_HAS_NO_RVALUE_REFERENCES
406d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)}
416d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)