diff options
Diffstat (limited to 'contrib/src/boost/mpl/aux_/msvc_is_class.hpp')
-rw-r--r-- | contrib/src/boost/mpl/aux_/msvc_is_class.hpp | 116 |
1 files changed, 58 insertions, 58 deletions
diff --git a/contrib/src/boost/mpl/aux_/msvc_is_class.hpp b/contrib/src/boost/mpl/aux_/msvc_is_class.hpp index d6c7691..acd40e3 100644 --- a/contrib/src/boost/mpl/aux_/msvc_is_class.hpp +++ b/contrib/src/boost/mpl/aux_/msvc_is_class.hpp @@ -1,58 +1,58 @@ -
-#ifndef BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
-#define BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-//
-// 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)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id$
-// $Date$
-// $Revision$
-
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/aux_/type_wrapper.hpp>
-#include <boost/mpl/aux_/yes_no.hpp>
-
-#include <boost/type_traits/is_reference.hpp>
-
-namespace boost { namespace mpl { namespace aux {
-
-template< typename T > struct is_class_helper
-{
- typedef int (T::* type)();
-};
-
-// MSVC 6.x-specific lightweight 'is_class' implementation;
-// Distinguishing feature: does not instantiate the type being tested.
-template< typename T >
-struct msvc_is_class_impl
-{
- template< typename U>
- static yes_tag test(type_wrapper<U>*, /*typename*/ is_class_helper<U>::type = 0);
- static no_tag test(void const volatile*, ...);
-
- enum { value = sizeof(test((type_wrapper<T>*)0)) == sizeof(yes_tag) };
- typedef bool_<value> type;
-};
-
-// agurt, 17/sep/04: have to check for 'is_reference' upfront to avoid ICEs in
-// complex metaprograms
-template< typename T >
-struct msvc_is_class
- : if_<
- is_reference<T>
- , false_
- , msvc_is_class_impl<T>
- >::type
-{
-};
-
-}}}
-
-#endif // BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
+ +#ifndef BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED +#define BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED + +// Copyright Aleksey Gurtovoy 2002-2004 +// +// 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) +// +// See http://www.boost.org/libs/mpl for documentation. + +// $Id$ +// $Date$ +// $Revision$ + +#include <boost/mpl/if.hpp> +#include <boost/mpl/bool.hpp> +#include <boost/mpl/aux_/type_wrapper.hpp> +#include <boost/mpl/aux_/yes_no.hpp> + +#include <boost/type_traits/is_reference.hpp> + +namespace boost { namespace mpl { namespace aux { + +template< typename T > struct is_class_helper +{ + typedef int (T::* type)(); +}; + +// MSVC 6.x-specific lightweight 'is_class' implementation; +// Distinguishing feature: does not instantiate the type being tested. +template< typename T > +struct msvc_is_class_impl +{ + template< typename U> + static yes_tag test(type_wrapper<U>*, /*typename*/ is_class_helper<U>::type = 0); + static no_tag test(void const volatile*, ...); + + enum { value = sizeof(test((type_wrapper<T>*)0)) == sizeof(yes_tag) }; + typedef bool_<value> type; +}; + +// agurt, 17/sep/04: have to check for 'is_reference' upfront to avoid ICEs in +// complex metaprograms +template< typename T > +struct msvc_is_class + : if_< + is_reference<T> + , false_ + , msvc_is_class_impl<T> + >::type +{ +}; + +}}} + +#endif // BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED |