summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/src/boost/variant/detail/generic_result_type.hpp')
-rw-r--r--3rdParty/Boost/src/boost/variant/detail/generic_result_type.hpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/variant/detail/generic_result_type.hpp b/3rdParty/Boost/src/boost/variant/detail/generic_result_type.hpp
new file mode 100644
index 0000000..b3fbb19
--- /dev/null
+++ b/3rdParty/Boost/src/boost/variant/detail/generic_result_type.hpp
@@ -0,0 +1,88 @@
+//-----------------------------------------------------------------------------
+// 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