[/ 
  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:has_trivial_destructor has_trivial_destructor]
   template <class T>
   struct has_trivial_destructor : public __tof {};
  
__inherit If T is a (possibly cv-qualified) type with a trivial destructor
then inherits from __true_type, otherwise inherits from __false_type.

If a type has a trivial destructor then the destructor has no effect: 
calls to the destructor can be safely omitted.  Note that using meta-programming
to omit a call to a single trivial-constructor call is of no benefit whatsoever. 
However, if loops and/or exception handling code can also be omitted, then some
benefit in terms of code size and speed can be obtained.

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

Without some (as yet unspecified) help from the compiler, 
has_trivial_destructor will never report that a user-defined class or struct has a 
trivial destructor; this is always safe, if possibly sub-optimal.  Currently 
(May 2005) only MWCW 9 and Visual C++ 8 have the necessary compiler __intrinsics to detect 
user-defined classes with trivial constructors.

__std_ref 12.4p3.

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

__examples

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

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

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

[:`has_trivial_destructor<MyClass>::value` is an integral constant 
expression that evaluates to /false/.]

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

[endsect]

