/Src/Dependencies/Boost/boost/variant/detail/generic_result_type.hpp
http://hadesmem.googlecode.com/ · C++ Header · 88 lines · 43 code · 19 blank · 26 comment · 0 complexity · dd329f17225237ddadf188f063f20bdf MD5 · raw file
- //-----------------------------------------------------------------------------
- // boost variant/detail/generic_result_type.hpp header file
- // See http://www.boost.org for updates, documentation, and revision history.
- //-----------------------------------------------------------------------------
- //
- // Copyright (c) 2003
- // Eric Friedman
- //
- // 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)
- #ifndef BOOST_VARIANT_DETAIL_GENERIC_RESULT_TYPE_HPP
- #define BOOST_VARIANT_DETAIL_GENERIC_RESULT_TYPE_HPP
- #include "boost/config.hpp"
- //////////////////////////////////////////////////////////////////////////
- // (workaround) macro BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE
- //
- // On compilers with BOOST_NO_VOID_RETURNS, this macro provides a route
- // to a single syntax for dealing with template functions that may (but
- // not necessarily) return nothing (i.e. void).
- //
- // BOOST_VARIANT_AUX_RETURN_VOID provided for compilers w/ (erroneous?)
- // warnings about non-void functions not returning a value.
- //
- #if !defined(BOOST_NO_VOID_RETURNS)
- #define BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(T) \
- T \
- /**/
- #define BOOST_VARIANT_AUX_RETURN_VOID \
- /**/
- #define BOOST_VARIANT_AUX_RETURN_VOID_TYPE \
- void \
- /**/
- #else // defined(BOOST_NO_VOID_RETURNS)
- namespace boost {
- namespace detail { namespace variant {
- struct fake_return_void
- {
- fake_return_void()
- {
- }
- template <typename T>
- fake_return_void(const T&)
- {
- }
- };
- template <typename T>
- struct no_void_returns_helper
- {
- typedef T type;
- };
- template <>
- struct no_void_returns_helper<void>
- {
- typedef fake_return_void type;
- };
- }} // namespace detail::variant
- } // namespace boost
- #define BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(T) \
- BOOST_DEDUCED_TYPENAME \
- ::boost::detail::variant::no_void_returns_helper< T >::type \
- /**/
- #define BOOST_VARIANT_AUX_RETURN_VOID \
- return ::boost::detail::variant::fake_return_void() \
- /**/
- #define BOOST_VARIANT_AUX_RETURN_VOID_TYPE \
- ::boost::detail::variant::fake_return_void
- #endif // BOOST_NO_VOID_RETURNS workaround
- #endif // BOOST_VARIANT_DETAIL_GENERIC_RESULT_TYPE_HPP