#ifndef BOOST_MPL_VOID_HPP_INCLUDED
#define BOOST_MPL_VOID_HPP_INCLUDED
-// + file: boost/mpl/void.hpp
-// + last modified: 05/may/03
-
-// Copyright (c) 2001-03
-// Peter Dimov, Aleksey Gurtovoy
+// Copyright Aleksey Gurtovoy 2001-2004
//
-// Permission to use, copy, modify, distribute and sell this software
-// and its documentation for any purpose is hereby granted without fee,
-// provided that the above copyright notice appears in all copies and
-// that both the copyright notice and this permission notice appear in
-// supporting documentation. No representations are made about the
-// suitability of this software for any purpose. It is provided "as is"
-// without express or implied warranty.
+// 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.
-#include "boost/mpl/void_fwd.hpp"
-#include "boost/mpl/bool.hpp"
-#include "boost/mpl/aux_/config/msvc.hpp"
-#include "boost/mpl/aux_/config/workaround.hpp"
+// $Id: void.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49267 $
+
+#include <boost/mpl/void_fwd.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+#include <boost/mpl/aux_/config/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
-namespace boost {
-namespace mpl {
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
// [JDG Feb-4-2003] made void_ a complete type to allow it to be
// instantiated so that it can be passed in as an object that can be
// a zero arity functor evaluation call.
struct void_ { typedef void_ type; };
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+
+namespace boost { namespace mpl {
+
template< typename T >
struct is_void_
: false_
#endif
};
-} // namespace mpl
-} // namespace boost
+template< typename T >
+struct is_not_void_
+ : true_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ using true_::value;
+#endif
+};
+
+template<>
+struct is_not_void_<void_>
+ : false_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ using false_::value;
+#endif
+};
+
+BOOST_MPL_AUX_NA_SPEC(1, is_void_)
+BOOST_MPL_AUX_NA_SPEC(1, is_not_void_)
+
+}}
#endif // BOOST_MPL_VOID_HPP_INCLUDED