diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-09-01 22:55:40 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-09-01 22:55:40 +0000 |
commit | 551ccae044b0ff658fe629dd67edd5ffe75d10e8 (patch) | |
tree | d7fa643a1f1f12dbc4ee049bcc7a032a49b17d51 /include/Support/type_traits.h | |
parent | ed543731fb385b55750d0c514d130a810339d739 (diff) | |
download | llvm-551ccae044b0ff658fe629dd67edd5ffe75d10e8.tar.gz llvm-551ccae044b0ff658fe629dd67edd5ffe75d10e8.tar.bz2 llvm-551ccae044b0ff658fe629dd67edd5ffe75d10e8.tar.xz |
Changes For Bug 352
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16137 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/Support/type_traits.h')
-rw-r--r-- | include/Support/type_traits.h | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/include/Support/type_traits.h b/include/Support/type_traits.h deleted file mode 100644 index de932b28db..0000000000 --- a/include/Support/type_traits.h +++ /dev/null @@ -1,54 +0,0 @@ -//===- Support/type_traits.h - Simplfied type traits ------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file provides a template class that determines if a type is a class or -// not. The basic mechanism, based on using the pointer to member function of -// a zero argument to a function was "boosted" from the boost type_traits -// library. See http://www.boost.org/ for all the gory details. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_SUPPORT_TYPE_TRAITS_H -#define LLVM_SUPPORT_TYPE_TRAITS_H - -// This is actually the conforming implementation which works with abstract -// classes. However, enough compilers have trouble with it that most will use -// the one in boost/type_traits/object_traits.hpp. This implementation actually -// works with VC7.0, but other interactions seem to fail when we use it. - -namespace llvm { - -namespace dont_use -{ - // These two functions should never be used. They are helpers to - // the is_class template below. They cannot be located inside - // is_class because doing so causes at least GCC to think that - // the value of the "value" enumerator is not constant. Placing - // them out here (for some strange reason) allows the sizeof - // operator against them to magically be constant. This is - // important to make the is_class<T>::value idiom zero cost. it - // evaluates to a constant 1 or 0 depending on whether the - // parameter T is a class or not (respectively). - template<typename T> char is_class_helper(void(T::*)(void)); - template<typename T> double is_class_helper(...); -} - -template <typename T> -struct is_class -{ - // is_class<> metafunction due to Paul Mensonides (leavings@attbi.com). For - // more details: - // http://groups.google.com/groups?hl=en&selm=000001c1cc83%24e154d5e0%247772e50c%40c161550a&rnum=1 - public: - enum { value = sizeof(char) == sizeof(dont_use::is_class_helper<T>(0)) }; -}; - -} - -#endif |