+// Type traits implementation -*- C++ -*-
+
+// Copyright (C) 2001 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// 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.
+
/*
*
* Copyright (c) 1997
* purpose. It is provided "as is" without express or implied warranty.
*/
+/** @file type_traits.h
+ * This is an internal header file, included by other library headers.
+ * You should not attempt to use it directly.
+ */
+
#ifndef _CPP_BITS_TYPE_TRAITS_H
#define _CPP_BITS_TYPE_TRAITS_H 1
}
*/
-
-template <bool _Truth> struct _Bool {};
-typedef _Bool<true> __true_type;
-typedef _Bool<false> __false_type;
+struct __true_type {};
+struct __false_type {};
template <class _Tp>
struct __type_traits {
typedef __true_type is_POD_type;
};
-#ifdef _GLIBCPP_USE_LONG_LONG
-
template<> struct __type_traits<long long> {
typedef __true_type has_trivial_default_constructor;
typedef __true_type has_trivial_copy_constructor;
typedef __true_type is_POD_type;
};
-#endif /* _GLIBCPP_USE_LONG_LONG */
-
template<> struct __type_traits<float> {
typedef __true_type has_trivial_default_constructor;
typedef __true_type has_trivial_copy_constructor;
typedef __true_type _Integral;
};
-#ifdef _GLIBCPP_USE_LONG_LONG
-
template<> struct _Is_integer<long long> {
typedef __true_type _Integral;
};
typedef __true_type _Integral;
};
-#endif /* _GLIBCPP_USE_LONG_LONG */
-
template<typename _Tp> struct _Is_normal_iterator {
typedef __false_type _Normal;
};
// Forward declaration hack, should really include this from somewhere.
-namespace std {
- template<typename _Iterator, typename _Container> class __normal_iterator;
-};
+namespace std
+{
+ template<typename _Iterator, typename _Container> class __normal_iterator;
+}
template<typename _Iterator, typename _Container>
struct _Is_normal_iterator< std::__normal_iterator<_Iterator, _Container> > {