classTraits.h File Reference

This file makes definitions that are useful to template writers and only marginally useful for any other purpose. If you are not writing templates you most likely already know the things about your data types that the class queries provided below are meant to tell you. More...

#include <memory>
Include dependency graph for classTraits.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  basicClassType< T >
 Defines a member, value, to be one of the basicClassTypes values. More...
struct  basicClassType< void >
 A type that contains enumeration value, named "value", which indicates the basic kind of data that a template parameter T refers to. This particular specialization of the template identifies the "void" type which cannot be identified by the more complex expression in the main specialization. More...
struct  EvalAnd< T, U, W, X >
 Assuming that the input template parameter types are designed to contain a compile time constant member, named value, which evaluates to either true or false, construct a compile time constant in this class, also named value, which will be true if and only if all the template parameter classes are true. More...
struct  EvalOr< T, U, W, X >
 Assuming that the input template parameter types are designed to contain a compile time constant member named value which evaluates to either true or false, construct a compile time constant in this class, also named value, which will be true if any of the template parameter classes is true. More...
struct  EvalTypeIf< bool, ZeroClass, OneClass >
 A mechanism for selecting between either of two types based on a compile time constant expression. More...
struct  EvalTypeIf< 0, ZeroClass, OneClass >
struct  EvalTypeIf< 1, ZeroClass, OneClass >
struct  false_value_type
 a type that means no. false_value_type::value == 1. More...
struct  isArithmeticType< T >
 isArithmeticType<T>::value is a compile time constant that is only true if T can be used in normal arithmetic operations. More...
struct  isArithmeticType< const void >
 isArithmeticType<void> is a variant of isArithmeticType that does not define a member named value and thus will will not compile correctly if an arithmetic type is required. More...
struct  isArithmeticType< void >
 isArithmeticType<void> is a variant of isArithmeticType that does not define a member named value and thus will will not compile correctly if an arithmetic type is required. More...
struct  isArrayType< T >
 isArrayType<T>::value is true if T is an array More...
struct  isArrayType< T const [N]>
 isArrayType<T>::value is true if T is an array More...
struct  isArrayType< T[N]>
 isArrayType<T>::value is true if T is an array More...
struct  isClassType< Type >
 isClassType<T>::value is a compile time constant that is true only if T is a class, or struct. More...
struct  isConstType< T >
 See isConstType<T>::value for a const expression telling you whether or not T is a "const" type or not. More...
struct  isConstType< const T >
struct  isConvertibleType< From, To >
 isConvertible<From,To>::value is a compile time constant which is true if type From can be converted into type To without special syntax. More...
struct  isConvertibleType< const double, int >
struct  isConvertibleType< const float, int >
struct  isConvertibleType< const long double, int >
struct  isConvertibleType< const void, To >
 A wrapper for a value that indicates that type "To" is a const void. More...
struct  isConvertibleType< double, int >
struct  isConvertibleType< float, int >
struct  isConvertibleType< long double, int >
struct  isConvertibleType< void, To >
 A wrapper for a value that indicates that type "To" is a void. More...
struct  isEnumType< T >
 isEnumType<T>::value is a compile time constant that is only true if T is an enumeration type -- and not simple arithmetic value, pointer, class, function pointer, etc. More...
struct  isEnumType< const void >
struct  isEnumType< void >
struct  isFloatType< T >
 isFloatType<T>::value is a compile time constant that is only true if if T is a floating point number of some form. More...
struct  isFloatType< const void >
 A definition of isFloatType for const void type. Void is not a flaot type. More...
struct  isFloatType< void >
 A definition of isFloatType for void type. Void is not a flaot type. More...
struct  isFunctionType< T >
 isFunctionType<T>::value is a compile time constant that is only true only if T can be executed like a function of 0 to 9 parameters. More...
struct  isFunctionType< const void >
struct  isFunctionType< void >
struct  isIntegralType< T >
 isIntegralType<T>::value is a compile time constant that is only true if T is an int, short, char, long, long long, or unsigned versions thereof. More...
struct  isIntegralType< const void >
 isIntegralType<void> is a variant of isIntegralType that does not define a member named value and thus will will not compile correctly if an integral type is required. More...
struct  isIntegralType< void >
 isIntegralType<void> is a variant of isIntegralType that does not define a member named value and thus will will not compile correctly if an integral type is required. More...
struct  isPodType< T >
 isPodType<T>::value is a compile time constant that is true if T is a plain old data type and not a struct or union. More...
struct  ispodtype_impl< T >
struct  ispodtype_impl< char >
struct  ispodtype_impl< double >
struct  ispodtype_impl< float >
struct  ispodtype_impl< int >
struct  ispodtype_impl< long >
struct  ispodtype_impl< long long >
struct  ispodtype_impl< short >
struct  ispodtype_impl< T * >
struct  ispodtype_impl< T *const >
struct  ispodtype_impl< T[N]>
struct  ispodtype_impl< unsigned char >
struct  ispodtype_impl< unsigned int >
struct  ispodtype_impl< unsigned long long >
struct  ispodtype_impl< unsigned short >
struct  isPointerType< T >
 isPointerType<T>::value is a compile time constant that is true only if T is a pointer or a builtin array -- which can be treated like a pointer. More...
struct  isPointerType< T * >
struct  isPointerType< T *const >
struct  isPointerType< T const * >
struct  isPointerType< T const *const >
struct  isPointerType< T const [N]>
struct  isPointerType< T[N]>
struct  isPolymorphicType< T >
 isPolymorphicType<T>::value is a compile time constant that is true only if T is a class with virtual methods. More...
struct  isPolymorphicType_impl< plainT >
struct  d1
struct  d2
struct  isPolymorphicType_selector< is_class >
 isPolymorphicType_selector exists to work around a compile error problem: More...
struct  rebind< T >
struct  isPolymorphicType_selector< true >
struct  rebind< T >
struct  isSameType< T, U >
 Member value tells you whether two types are the same. More...
struct  isSignedType< T >
 isSignedType<T>::value is a compile time constant that is true only if T is a signed number. More...
struct  isSignedType< const void >
struct  isSignedType< void >
struct  isTemplate< T >
 isTemplate<T>::value is a compile time constant that is only true if T is a template of between 1 and 9 template parameters. More...
struct  isUnsignedType< T >
 isUnsignedType<T>:value is a compile time constant which is true only if T is an unsigned numeric type. More...
struct  isUnsignedType< const void >
struct  isUnsignedType< void >
struct  not_a_type
struct  pointerReferent< T >
 pointerReferent<T>::type is the type that T points to if T is a pointer. If T is not a pointer, then pointerReference<T>::type is the same as T. More...
struct  pointerReferent< T * >
 Determine the type referred to by a mutable pointer. See member "type". More...
struct  pointerReferent< T const * >
 Determine the type referred to by a const pointer. See member "type". More...
struct  pointerReferent< T const [N]>
 Determine the type referred to by a const array's name. See member "type". More...
struct  pointerReferent< T[N]>
 Determine the type referred to by an array's name. See member "type". More...
struct  removeAllExtents< T >
 Like removeCV<T>, this function removes attributes from its template parameter T. In this case, it removes arrayness, constness, pointerness, and volatility. It defines a member type, type, which is the same as it's template parameter, T, but without *, &, [], or volatile keywords. In sort, it tells you what you are really looking at. More...
struct  removeAllExtents< T[N]>
 See removeAllExtents<T> More...
struct  removeConst< T >
 typename removeConst<T>::type is a type that is the non-const version of T. For normal classes, removeConst<T>::type is the same as T, but for T which is const, type is the non-const form. More...
struct  removeCV< T >
 typename removeCV<T>::type is the same as type T but is neither const nor is it volatile. More...
struct  removeReference< T >
 typename removeReference<T>::type is the same as type T, but is not a reference. More...
struct  removeReference_impl< U >
struct  removeReference_impl< V & >
struct  removeVolatile< T >
 typename removeVolatile<T>::type is a type that is the non-volatile version of T. For normal classes, removeVolatile<T>::type is the same as T, but for T which is const, type is the non-const form. More...
struct  removeVolatile< volatile T >
struct  true_value_type
 a type that means yes. true_value_type::value == 1. More...

Namespaces

namespace  cxxtls
 

The namespace that encapsulates most of the functionality in the CXX toolkit.


Enumerations

enum  basicClassTypes {
  bctUnknownType = 0,
  bctVoidType = 1,
  bctIntegralType = 2,
  bctEnumType = 3,
  bctPointerType = 4,
  bctArrayType = 5,
  bctFloatType = 6,
  bctFunctionType = 7,
  bctClassType = 8
}
 

A list of identifiers for the basic kinds of data types that can appear in a C++ program -- as defined by the template instantiator.

More...

Functions

template<class Base , class Derived >
void derivedFromBase (Base *bptr, Derived *&dref)
 Compute the address of a Derived class object given a pointer to a Base class object from which it is derived.

Detailed Description

This file makes definitions that are useful to template writers and only marginally useful for any other purpose. If you are not writing templates you most likely already know the things about your data types that the class queries provided below are meant to tell you.

See also:
classTraits_documentation for comments about the use of the declarations in this file. Look at file test_classTraits.c for example uses of these types and expected values given various input data types.

Definition in file classTraits.h.

Generated on Wed Feb 29 22:51:02 2012 for CXXUtilities by  doxygen 1.6.3