// TR1 type_traits -*- C++ -*- // Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the // terms of the GNU General Public License as published by the // Free Software Foundation; either version 2, or (at your option) // any later version. // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING. If not, write to the Free // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, // USA. // As a special exception, you may use this file as part of a free software // library without restriction. Specifically, if other files instantiate // templates or use macros or inline functions from this file, or you compile // this file and link it with other files to produce an executable, this // file does not by itself cause the resulting executable to be covered by // the GNU General Public License. This exception does not however // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. /** @file tr1/type_traits_fwd.h * This is an internal header file, included by other library headers. * You should not attempt to use it directly. */ #ifndef _TYPE_TRAITS_FWD_H #define _TYPE_TRAITS_FWD_H 1 #include // namespace std::tr1 namespace std { _GLIBCXX_BEGIN_NAMESPACE(tr1) /// @brief helper classes [4.3]. template struct integral_constant; typedef integral_constant true_type; typedef integral_constant false_type; /// @brief primary type categories [4.5.1]. template struct is_void; template struct is_integral; template struct is_floating_point; template struct is_array; template struct is_pointer; template struct is_reference; template struct is_member_object_pointer; template struct is_member_function_pointer; template struct is_enum; template struct is_union; template struct is_class; template struct is_function; /// @brief composite type traits [4.5.2]. template struct is_arithmetic; template struct is_fundamental; template struct is_object; template struct is_scalar; template struct is_compound; template struct is_member_pointer; // Extension. template struct __is_union_or_class; /// @brief type properties [4.5.3]. template struct is_const; template struct is_volatile; template struct is_pod; template struct is_empty; template struct is_polymorphic; template struct is_abstract; template struct has_trivial_constructor; template struct has_trivial_copy; template struct has_trivial_assign; template struct has_trivial_destructor; template struct has_nothrow_constructor; template struct has_nothrow_copy; template struct has_nothrow_assign; template struct has_virtual_destructor; template struct is_signed; template struct is_unsigned; template struct alignment_of; template struct rank; template struct extent; /// @brief relationships between types [4.6]. template struct is_same; template struct is_convertible; template struct is_base_of; /// @brief const-volatile modifications [4.7.1]. template struct remove_const; template struct remove_volatile; template struct remove_cv; template struct add_const; template struct add_volatile; template struct add_cv; /// @brief reference modifications [4.7.2]. template struct remove_reference; template struct add_reference; /// @brief array modifications [4.7.3]. template struct remove_extent; template struct remove_all_extents; /// @brief pointer modifications [4.7.4]. template struct remove_pointer; template struct add_pointer; /// @brief other transformations [4.8]. template struct aligned_storage; _GLIBCXX_END_NAMESPACE } #endif