| [/ |
| 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:user_defined User Defined Specializations] |
| |
| Occationally the end user may need to provide their own specialization |
| for one of the type traits - typically where intrinsic compiler support |
| is required to implement a specific trait fully. |
| These specializations should derive from boost::__true_type or boost::__false_type |
| as appropriate: |
| |
| #include <boost/type_traits/is_pod.hpp> |
| #include <boost/type_traits/is_class.hpp> |
| #include <boost/type_traits/is_union.hpp> |
| |
| struct my_pod{}; |
| struct my_union |
| { |
| char c; |
| int i; |
| }; |
| |
| namespace boost |
| { |
| template<> |
| struct __is_pod<my_pod> : public __true_type{}; |
| |
| template<> |
| struct __is_pod<my_union> : public __true_type{}; |
| |
| template<> |
| struct __is_union<my_union> : public __true_type{}; |
| |
| template<> |
| struct __is_class<my_union> : public __false_type{}; |
| } |
| |
| [endsect] |
| |