[/ 
  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_object is_object]
   template <class T>
   struct is_object : public __tof {};
  
__inherit If T is a (possibly cv-qualified) object type 
then inherits from __true_type, 
otherwise inherits from __false_type.  All types are object types except
references, void, and function types.

__std_ref 3.9p9.

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

__examples

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

[:`is_object<int*>::type` is the type `__true_type`.]

[:`is_object<int (*)(void)>::value` is an integral constant 
expression that evaluates to /true/.]

[:`is_object<int (MyClass::*)(void)const>::value` is an integral constant 
expression that evaluates to /true/.]

[:`is_object<int &>::value` is an integral constant 
expression that evaluates to /false/: reference types are not objects]

[:`is_object<int (double)>::value` is an integral constant 
expression that evaluates to /false/: function types are not objects]

[:`is_object<const void>::value` is an integral constant 
expression that evaluates to /false/: void is not an object type]

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

[endsect]

