[/ 
  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_empty is_empty]
   template <class T>
   struct is_empty : public __tof {};
  
__inherit If T is an empty class type then inherits from __true_type, 
otherwise inherits from __false_type.

__std_ref 10p5.

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

__compat In order to correctly detect empty classes this trait relies on either:

* the compiler implementing zero sized empty base classes, or
* the compiler providing __intrinsics to detect empty classes. 

Can not be used with incomplete types.

Can not be used with union types, until is_union can be made to work.

If the compiler does not support partial-specialization of class templates, 
then this template can not be used with abstract types.

__examples

[:Given: `struct empty_class {};` ]

[:`is_empty<empty_class>` inherits from `__true_type`.]

[:`is_empty<empty_class const>::type` is the type `__true_type`.]

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

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

[endsect]

