sl@0: sl@0: #ifndef BOOST_MPL_VOID_HPP_INCLUDED sl@0: #define BOOST_MPL_VOID_HPP_INCLUDED sl@0: sl@0: // Copyright Aleksey Gurtovoy 2001-2004 sl@0: // sl@0: // Distributed under the Boost Software License, Version 1.0. sl@0: // (See accompanying file LICENSE_1_0.txt or copy at sl@0: // http://www.boost.org/LICENSE_1_0.txt) sl@0: // sl@0: // See http://www.boost.org/libs/mpl for documentation. sl@0: sl@0: // $Source: /cvsroot/boost/boost/boost/mpl/void.hpp,v $ sl@0: // $Date: 2004/09/02 15:40:42 $ sl@0: // $Revision: 1.9 $ sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN sl@0: sl@0: // [JDG Feb-4-2003] made void_ a complete type to allow it to be sl@0: // instantiated so that it can be passed in as an object that can be sl@0: // used to select an overloaded function. Possible use includes signaling sl@0: // a zero arity functor evaluation call. sl@0: struct void_ { typedef void_ type; }; sl@0: sl@0: BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE sl@0: sl@0: namespace boost { namespace mpl { sl@0: sl@0: template< typename T > sl@0: struct is_void_ sl@0: : false_ sl@0: { sl@0: #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) sl@0: using false_::value; sl@0: #endif sl@0: }; sl@0: sl@0: template<> sl@0: struct is_void_ sl@0: : true_ sl@0: { sl@0: #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) sl@0: using true_::value; sl@0: #endif sl@0: }; sl@0: sl@0: template< typename T > sl@0: struct is_not_void_ sl@0: : true_ sl@0: { sl@0: #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) sl@0: using true_::value; sl@0: #endif sl@0: }; sl@0: sl@0: template<> sl@0: struct is_not_void_ sl@0: : false_ sl@0: { sl@0: #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) sl@0: using false_::value; sl@0: #endif sl@0: }; sl@0: sl@0: BOOST_MPL_AUX_NA_SPEC(1, is_void_) sl@0: BOOST_MPL_AUX_NA_SPEC(1, is_not_void_) sl@0: sl@0: }} sl@0: sl@0: #endif // BOOST_MPL_VOID_HPP_INCLUDED