[/ 
  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_arithmetic is_arithmetic]
   template <class T>
   struct is_arithmetic : public __tof {};
  
__inherit If T is a (possibly cv-qualified) arithmetic type then inherits from 
__true_type, otherwise inherits from __false_type.  Arithmetic types include 
integral and floating point types (see also __is_integral and __is_floating_point).

__std_ref 3.9.1p8.

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

__examples

[:`is_arithmetic<int>` inherits from `__true_type`.]

[:`is_arithmetic<char>::type` is the type `__true_type`.]

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

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

[endsect]

