[/ 
  Copyright 2007 John Maddock.
  Distributed under the Boost Software License, Version 1.0.
  (See accompanying file LICENSE_1_0.txt or copy at
  http://www.boost.org/LICENSE_1_0.txt).
]

[section:is_fundamental is_fundamental]
   template <class T>
   struct is_fundamental : public __tof {};
  
__inherit If T is a (possibly cv-qualified) fundamental type then inherits from __true_type, 
otherwise inherits from __false_type.  Fundamental types include integral, floating
point and void types (see also __is_integral, __is_floating_point and __is_void)

__std_ref 3.9.1.

__header ` #include <boost/type_traits/is_fundamental.hpp>` or ` #include <boost/type_traits.hpp>`

__examples

[:`is_fundamental<int)>` inherits from `__true_type`.]

[:`is_fundamental<double const>::type` is the type `__true_type`.]

[:`is_fundamental<void>::value` is an integral constant 
expression that evaluates to /true/.]

[:`is_fundamental<T>::value_type` is the type `bool`.]

[endsect]

