-// 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 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
//===----------------------------------------------------------------------===//
//
// 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.
+// a zero argument to a function was "boosted" from the boost type_traits
+// library. See http://www.boost.org/ for all the gory details.
// is_class because doing so causes at least GCC to think that
// the value of the "value" enumerator is not constant. Placing
// is_class because doing so causes at least GCC to think that
// the value of the "value" enumerator is not constant. Placing
// operator against them to magically be constant. This is
// important to make the is_class<T>::value idiom zero cost. it
// operator against them to magically be constant. This is
// important to make the is_class<T>::value idiom zero cost. it
// 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(...);
// 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(...);