| [/ |
| 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_stateless is_stateless] |
| template <class T> |
| struct is_stateless : public __tof {}; |
| |
| __inherit Ff T is a stateless type then inherits from __true_type, otherwise |
| from __false_type. |
| |
| Type T must be a complete type. |
| |
| A stateless type is a type that has no storage and whose constructors and |
| destructors are trivial. That means that `is_stateless` only inherits from |
| __true_type if the following expression is `true`: |
| |
| ::boost::has_trivial_constructor<T>::value |
| && ::boost::has_trivial_copy<T>::value |
| && ::boost::has_trivial_destructor<T>::value |
| && ::boost::is_class<T>::value |
| && ::boost::is_empty<T>::value |
| |
| __std_ref 3.9p10. |
| |
| __header ` #include <boost/type_traits/is_stateless.hpp>` or ` #include <boost/type_traits.hpp>` |
| |
| __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, is_stateless will never |
| report that a class or struct is stateless; this is always safe, |
| if possibly sub-optimal. Currently (May 2005) only MWCW 9 and Visual C++ 8 have the necessary |
| compiler __intrinsics to make this template work automatically. |
| |
| [endsect] |
| |