1// { dg-do compile } 2 3// 2007-02-04 Benjamin Kosnik <bkoz@redhat.com> 4// 5// Copyright (C) 2007, 2009 Free Software Foundation, Inc. 6// 7// This file is part of the GNU ISO C++ Library. This library is free 8// software; you can redistribute it and/or modify it under the 9// terms of the GNU General Public License as published by the 10// Free Software Foundation; either version 3, or (at your option) 11// any later version. 12// 13// This library is distributed in the hope that it will be useful, 14// but WITHOUT ANY WARRANTY; without even the implied warranty of 15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16// GNU General Public License for more details. 17// 18// You should have received a copy of the GNU General Public License 19// along with this library; see the file COPYING3. If not see 20// <http://www.gnu.org/licenses/>. 21 22#include <tr1/type_traits> 23 24namespace std { 25namespace tr1 { 26 27 // [4.3] helper class: 28 template <class T, T v> struct integral_constant; 29 typedef integral_constant<bool, true> true_type; 30 typedef integral_constant<bool, false> false_type; 31 32 // [4.5.1] primary type categories: 33 template <class T> struct is_void; 34 template <class T> struct is_integral; 35 template <class T> struct is_floating_point; 36 template <class T> struct is_array; 37 template <class T> struct is_pointer; 38 template <class T> struct is_reference; 39 template <class T> struct is_member_object_pointer; 40 template <class T> struct is_member_function_pointer; 41 template <class T> struct is_enum; 42 template <class T> struct is_union; 43 template <class T> struct is_class; 44 template <class T> struct is_function; 45 46 // [4.5.2] composite type categories: 47 template <class T> struct is_arithmetic; 48 template <class T> struct is_fundamental; 49 template <class T> struct is_object; 50 template <class T> struct is_scalar; 51 template <class T> struct is_compound; 52 template <class T> struct is_member_pointer; 53 54 // [4.5.3] type properties: 55 template <class T> struct is_const; 56 template <class T> struct is_volatile; 57 template <class T> struct is_pod; 58 template <class T> struct is_empty; 59 template <class T> struct is_polymorphic; 60 template <class T> struct is_abstract; 61 template <class T> struct has_trivial_constructor; 62 template <class T> struct has_trivial_copy; 63 template <class T> struct has_trivial_assign; 64 template <class T> struct has_trivial_destructor; 65 template <class T> struct has_nothrow_constructor; 66 template <class T> struct has_nothrow_copy; 67 template <class T> struct has_nothrow_assign; 68 template <class T> struct has_virtual_destructor; 69 template <class T> struct is_signed; 70 template <class T> struct is_unsigned; 71 template <class T> struct alignment_of; 72 template <class T> struct rank; 73 template <class T, unsigned I> struct extent; 74 75 // [4.6] type relations: 76 template <class T, class U> struct is_same; 77 template <class Base, class Derived> struct is_base_of; 78 template <class From, class To> struct is_convertible; 79 80 // [4.7.1] const-volatile modifications: 81 template <class T> struct remove_const; 82 template <class T> struct remove_volatile; 83 template <class T> struct remove_cv; 84 template <class T> struct add_const; 85 template <class T> struct add_volatile; 86 template <class T> struct add_cv; 87 88 // [4.7.2] reference modifications: 89 template <class T> struct remove_reference; 90 template <class T> struct add_reference; 91 92 // [4.7.3] array modifications: 93 template <class T> struct remove_extent; 94 template <class T> struct remove_all_extents; 95 96 // [4.7.4] pointer modifications: 97 template <class T> struct remove_pointer; 98 template <class T> struct add_pointer; 99 100 // [4.8] other transformations: 101 template <std::size_t Len, std::size_t Align> struct aligned_storage; 102} // namespace tr1 103} // namespace std 104