mirror of
https://github.com/boostorg/fusion.git
synced 2025-07-31 13:07:28 +02:00
Merge pull request #179 from boostorg/support
Reorganize support facility to simplify
This commit is contained in:
@ -8,7 +8,6 @@
|
|||||||
#define FUSION_CATEGORY_OF_07202005_0308
|
#define FUSION_CATEGORY_OF_07202005_0308
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/fusion/support/detail/category_of.hpp>
|
|
||||||
#include <boost/fusion/support/tag_of.hpp>
|
#include <boost/fusion/support/tag_of.hpp>
|
||||||
#include <boost/type_traits/is_base_of.hpp>
|
#include <boost/type_traits/is_base_of.hpp>
|
||||||
|
|
||||||
@ -44,7 +43,10 @@ namespace boost { namespace fusion
|
|||||||
struct category_of_impl
|
struct category_of_impl
|
||||||
{
|
{
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct apply : detail::fusion_category_of<T> {};
|
struct apply
|
||||||
|
{
|
||||||
|
typedef typename T::category type;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2014 Eric Niebler
|
Copyright (c) 2014 Eric Niebler
|
||||||
Copyright (c) 2014,2018 Kohei Takahashi
|
Copyright (c) 2014,2015,2018 Kohei Takahashi
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
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)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@ -108,4 +108,12 @@ namespace std
|
|||||||
decltype parenthesized_expr ::type
|
decltype parenthesized_expr ::type
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// Workaround for GCC 4.6 that rejects defaulted function with noexcept.
|
||||||
|
#if BOOST_WORKAROUND(BOOST_GCC, / 100 == 406)
|
||||||
|
# define BOOST_FUSION_NOEXCEPT_ON_DEFAULTED
|
||||||
|
#else
|
||||||
|
# define BOOST_FUSION_NOEXCEPT_ON_DEFAULTED BOOST_NOEXCEPT
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2016 Lee Clagett
|
Copyright (c) 2016 Lee Clagett
|
||||||
|
Copyright (c) 2018 Kohei Takahashi
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
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)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@ -8,6 +9,7 @@
|
|||||||
#define FUSION_AND_07152016_1625
|
#define FUSION_AND_07152016_1625
|
||||||
|
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
|
#include <boost/config/workaround.hpp>
|
||||||
#include <boost/type_traits/integral_constant.hpp>
|
#include <boost/type_traits/integral_constant.hpp>
|
||||||
|
|
||||||
#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
||||||
@ -15,6 +17,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace detail {
|
namespace boost { namespace fusion { namespace detail {
|
||||||
|
#if defined(BOOST_NO_CXX17_FOLD_EXPRESSIONS) \
|
||||||
|
|| BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1913))
|
||||||
template<typename ...Cond>
|
template<typename ...Cond>
|
||||||
struct and_impl : false_type {};
|
struct and_impl : false_type {};
|
||||||
|
|
||||||
@ -34,6 +38,10 @@ namespace boost { namespace fusion { namespace detail {
|
|||||||
recursive. */
|
recursive. */
|
||||||
template<typename ...Cond>
|
template<typename ...Cond>
|
||||||
struct and_ : and_impl1<Cond::value...> {};
|
struct and_ : and_impl1<Cond::value...> {};
|
||||||
|
#else
|
||||||
|
template <typename ...Cond>
|
||||||
|
struct and_ : integral_constant<bool, ((bool)Cond::value && ...)> {};
|
||||||
|
#endif
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
#endif // FUSION_AND_07152016_1625
|
#endif // FUSION_AND_07152016_1625
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
/*=============================================================================
|
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
|
||||||
|
|
||||||
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)
|
|
||||||
==============================================================================*/
|
|
||||||
#if !defined(FUSION_CATEGORY_OF_07212005_1025)
|
|
||||||
#define FUSION_CATEGORY_OF_07212005_1025
|
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace detail
|
|
||||||
{
|
|
||||||
template <typename T>
|
|
||||||
struct fusion_category_of
|
|
||||||
{
|
|
||||||
typedef typename T::category type;
|
|
||||||
};
|
|
||||||
}}}
|
|
||||||
|
|
||||||
#endif
|
|
@ -9,19 +9,17 @@
|
|||||||
#define FUSION_DETAIL_IS_MPL_SEQUENCE_29122006_1105
|
#define FUSION_DETAIL_IS_MPL_SEQUENCE_29122006_1105
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/fusion/support/sequence_base.hpp>
|
#include <boost/fusion/support/detail/is_native_fusion_sequence.hpp>
|
||||||
#include <boost/mpl/is_sequence.hpp>
|
#include <boost/mpl/is_sequence.hpp>
|
||||||
#include <boost/mpl/and.hpp>
|
#include <boost/mpl/and.hpp>
|
||||||
#include <boost/mpl/not.hpp>
|
#include <boost/mpl/not.hpp>
|
||||||
#include <boost/type_traits/is_complete.hpp>
|
|
||||||
#include <boost/type_traits/is_convertible.hpp>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace detail
|
namespace boost { namespace fusion { namespace detail
|
||||||
{
|
{
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct is_mpl_sequence
|
struct is_mpl_sequence
|
||||||
: mpl::and_<
|
: mpl::and_<
|
||||||
mpl::not_<mpl::and_<is_complete<T>, is_convertible<T, from_sequence_convertible_type> > >
|
mpl::not_<is_native_fusion_sequence<T> >
|
||||||
, mpl::is_sequence<T> >
|
, mpl::is_sequence<T> >
|
||||||
{};
|
{};
|
||||||
}}}
|
}}}
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
/*=============================================================================
|
||||||
|
Copyright (c) 2018 Kohei Takahashi
|
||||||
|
|
||||||
|
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_FUSION_IS_NATIVE_FUSION_SEQUENCE
|
||||||
|
#define BOOST_FUSION_IS_NATIVE_FUSION_SEQUENCE
|
||||||
|
|
||||||
|
#include <boost/fusion/support/config.hpp>
|
||||||
|
#include <boost/fusion/support/sequence_base.hpp>
|
||||||
|
#include <boost/mpl/and.hpp>
|
||||||
|
#include <boost/type_traits/is_complete.hpp>
|
||||||
|
#include <boost/type_traits/is_convertible.hpp>
|
||||||
|
|
||||||
|
namespace boost { namespace fusion { namespace detail
|
||||||
|
{
|
||||||
|
template <typename Sequence>
|
||||||
|
struct is_native_fusion_sequence
|
||||||
|
: mpl::and_<
|
||||||
|
is_complete<Sequence>
|
||||||
|
, is_convertible<Sequence, detail::from_sequence_convertible_type>
|
||||||
|
>
|
||||||
|
{};
|
||||||
|
}}}
|
||||||
|
|
||||||
|
#endif
|
@ -1,19 +0,0 @@
|
|||||||
/*=============================================================================
|
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
|
||||||
|
|
||||||
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)
|
|
||||||
==============================================================================*/
|
|
||||||
#if !defined(FUSION_IS_VIEW_03202006_0018)
|
|
||||||
#define FUSION_IS_VIEW_03202006_0018
|
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace detail
|
|
||||||
{
|
|
||||||
template <typename T>
|
|
||||||
struct fusion_is_view
|
|
||||||
{
|
|
||||||
typedef typename T::is_view type;
|
|
||||||
};
|
|
||||||
}}}
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,16 +0,0 @@
|
|||||||
/*=============================================================================
|
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
|
||||||
|
|
||||||
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)
|
|
||||||
==============================================================================*/
|
|
||||||
#if !defined(FUSION_UNKNOWN_KEY_09242005_1219)
|
|
||||||
#define FUSION_UNKNOWN_KEY_09242005_1219
|
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace detail
|
|
||||||
{
|
|
||||||
template <int index>
|
|
||||||
struct unknown_key {};
|
|
||||||
}}}
|
|
||||||
|
|
||||||
#endif
|
|
@ -10,13 +10,10 @@
|
|||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/fusion/support/sequence_base.hpp>
|
#include <boost/fusion/support/sequence_base.hpp>
|
||||||
#include <boost/fusion/support/tag_of.hpp>
|
#include <boost/fusion/support/tag_of.hpp>
|
||||||
#include <boost/mpl/and.hpp>
|
#include <boost/fusion/support/detail/is_native_fusion_sequence.hpp>
|
||||||
#include <boost/mpl/bool.hpp>
|
#include <boost/mpl/bool.hpp>
|
||||||
#include <boost/mpl/is_sequence.hpp>
|
#include <boost/mpl/is_sequence.hpp>
|
||||||
#include <boost/mpl/or.hpp>
|
|
||||||
#include <boost/type_traits/is_complete.hpp>
|
|
||||||
#include <boost/type_traits/is_convertible.hpp>
|
#include <boost/type_traits/is_convertible.hpp>
|
||||||
#include <boost/type_traits/is_same.hpp>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
@ -69,13 +66,7 @@ namespace boost { namespace fusion
|
|||||||
>
|
>
|
||||||
{};
|
{};
|
||||||
|
|
||||||
template <typename Sequence, typename Enable = void>
|
using detail::is_native_fusion_sequence;
|
||||||
struct is_native_fusion_sequence
|
|
||||||
: mpl::and_<
|
|
||||||
is_complete<Sequence>,
|
|
||||||
is_convertible<Sequence, fusion::detail::from_sequence_convertible_type>
|
|
||||||
>
|
|
||||||
{};
|
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/mpl/bool.hpp>
|
#include <boost/mpl/bool.hpp>
|
||||||
#include <boost/fusion/support/detail/is_view.hpp>
|
|
||||||
#include <boost/fusion/support/tag_of.hpp>
|
#include <boost/fusion/support/tag_of.hpp>
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
@ -28,8 +27,9 @@ namespace boost { namespace fusion
|
|||||||
{
|
{
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct apply
|
struct apply
|
||||||
: detail::fusion_is_view<T>
|
{
|
||||||
{};
|
typedef typename T::is_view type;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
Copyright (c) 2001-2011 Joel de Guzman
|
||||||
|
Copyright (c) 2018 Kohei Takahashi
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
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)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@ -10,7 +11,6 @@
|
|||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <iosfwd>
|
#include <iosfwd>
|
||||||
|
|
||||||
#include <boost/config.hpp>
|
|
||||||
#if defined(BOOST_MSVC)
|
#if defined(BOOST_MSVC)
|
||||||
# pragma warning(push)
|
# pragma warning(push)
|
||||||
# pragma warning(disable: 4522) // multiple assignment operators specified warning
|
# pragma warning(disable: 4522) // multiple assignment operators specified warning
|
||||||
@ -23,9 +23,16 @@ namespace boost { namespace fusion
|
|||||||
struct unused_type
|
struct unused_type
|
||||||
{
|
{
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
unused_type() BOOST_NOEXCEPT
|
BOOST_DEFAULTED_FUNCTION(
|
||||||
|
unused_type() BOOST_FUSION_NOEXCEPT_ON_DEFAULTED,
|
||||||
{
|
{
|
||||||
}
|
})
|
||||||
|
|
||||||
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
|
BOOST_DEFAULTED_FUNCTION(
|
||||||
|
unused_type(unused_type const&) BOOST_FUSION_NOEXCEPT_ON_DEFAULTED,
|
||||||
|
{
|
||||||
|
})
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
@ -33,35 +40,12 @@ namespace boost { namespace fusion
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
BOOST_FUSION_CONSTEXPR_THIS BOOST_FUSION_GPU_ENABLED
|
|
||||||
unused_type const&
|
|
||||||
operator=(T const&) const BOOST_NOEXCEPT
|
|
||||||
{
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
|
||||||
unused_type&
|
|
||||||
operator=(T const&) BOOST_NOEXCEPT
|
|
||||||
{
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOST_FUSION_CONSTEXPR_THIS BOOST_FUSION_GPU_ENABLED
|
BOOST_FUSION_CONSTEXPR_THIS BOOST_FUSION_GPU_ENABLED
|
||||||
unused_type const&
|
unused_type const&
|
||||||
operator=(unused_type const&) const BOOST_NOEXCEPT
|
operator=(unused_type const&) const BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
|
||||||
unused_type&
|
|
||||||
operator=(unused_type const&) BOOST_NOEXCEPT
|
|
||||||
{
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_CONSTEXPR_OR_CONST unused_type unused = unused_type();
|
BOOST_CONSTEXPR_OR_CONST unused_type unused = unused_type();
|
||||||
|
@ -267,6 +267,7 @@ project
|
|||||||
[ compile support/and.cpp
|
[ compile support/and.cpp
|
||||||
: [ requires cxx11_variadic_templates ] ]
|
: [ requires cxx11_variadic_templates ] ]
|
||||||
[ compile support/tag_of.cpp ]
|
[ compile support/tag_of.cpp ]
|
||||||
|
[ compile support/unused.cpp ]
|
||||||
|
|
||||||
# [ compile-fail xxx.cpp ]
|
# [ compile-fail xxx.cpp ]
|
||||||
|
|
||||||
|
95
test/support/unused.cpp
Normal file
95
test/support/unused.cpp
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
/*=============================================================================
|
||||||
|
Copyright (c) 2018 Kohei Takahashi
|
||||||
|
|
||||||
|
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)
|
||||||
|
==============================================================================*/
|
||||||
|
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
#include <boost/fusion/support/unused.hpp>
|
||||||
|
#include <boost/type_traits/detail/yes_no_type.hpp>
|
||||||
|
#include <boost/static_assert.hpp>
|
||||||
|
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||||
|
#include <utility>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct T { };
|
||||||
|
|
||||||
|
void unused_construction()
|
||||||
|
{
|
||||||
|
boost::fusion::unused_type dephault;
|
||||||
|
|
||||||
|
boost::fusion::unused_type BOOST_ATTRIBUTE_UNUSED parenthesis();
|
||||||
|
#ifndef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||||
|
boost::fusion::unused_type BOOST_ATTRIBUTE_UNUSED brace{};
|
||||||
|
boost::fusion::unused_type BOOST_ATTRIBUTE_UNUSED list_copy = {};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
boost::fusion::unused_type copy_copy BOOST_ATTRIBUTE_UNUSED = dephault;
|
||||||
|
boost::fusion::unused_type copy_direct BOOST_ATTRIBUTE_UNUSED (dephault);
|
||||||
|
#ifndef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||||
|
boost::fusion::unused_type copy_copy_brace_direct BOOST_ATTRIBUTE_UNUSED = {dephault};
|
||||||
|
boost::fusion::unused_type copy_direct_brace BOOST_ATTRIBUTE_UNUSED {dephault};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||||
|
boost::fusion::unused_type move_copy BOOST_ATTRIBUTE_UNUSED = std::move(dephault);
|
||||||
|
boost::fusion::unused_type move_direct BOOST_ATTRIBUTE_UNUSED (std::move(dephault));
|
||||||
|
#ifndef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||||
|
boost::fusion::unused_type move_copy_brace_direct BOOST_ATTRIBUTE_UNUSED = {std::move(dephault)};
|
||||||
|
boost::fusion::unused_type move_direct_brace BOOST_ATTRIBUTE_UNUSED {std::move(dephault)};
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
T value;
|
||||||
|
|
||||||
|
boost::fusion::unused_type T_copy_copy BOOST_ATTRIBUTE_UNUSED = value;
|
||||||
|
boost::fusion::unused_type T_copy_direct BOOST_ATTRIBUTE_UNUSED (value);
|
||||||
|
#ifndef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||||
|
boost::fusion::unused_type T_copy_copy_brace_direct BOOST_ATTRIBUTE_UNUSED = {value};
|
||||||
|
boost::fusion::unused_type T_copy_direct_brace BOOST_ATTRIBUTE_UNUSED {value};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||||
|
boost::fusion::unused_type T_move_copy BOOST_ATTRIBUTE_UNUSED = std::move(value);
|
||||||
|
boost::fusion::unused_type T_move_direct BOOST_ATTRIBUTE_UNUSED (std::move(value));
|
||||||
|
#ifndef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||||
|
boost::fusion::unused_type T_move_copy_brace_direct BOOST_ATTRIBUTE_UNUSED = {std::move(value)};
|
||||||
|
boost::fusion::unused_type T_move_direct_brace BOOST_ATTRIBUTE_UNUSED {std::move(value)};
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void unused_assignment()
|
||||||
|
{
|
||||||
|
boost::fusion::unused_type val1, val2;
|
||||||
|
|
||||||
|
val1 = val2;
|
||||||
|
#ifndef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||||
|
val1 = {};
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||||
|
val1 = std::move(val2);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
T value;
|
||||||
|
|
||||||
|
val1 = value;
|
||||||
|
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||||
|
val1 = std::move(value);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
boost::type_traits::yes_type test_unused(boost::fusion::detail::unused_only const&);
|
||||||
|
boost::type_traits::no_type test_unused(...);
|
||||||
|
|
||||||
|
void only_unused()
|
||||||
|
{
|
||||||
|
BOOST_STATIC_ASSERT((sizeof(test_unused(boost::fusion::unused)) == sizeof(boost::type_traits::yes_type)));
|
||||||
|
BOOST_STATIC_ASSERT((sizeof(test_unused(0)) == sizeof(boost::type_traits::no_type)));
|
||||||
|
|
||||||
|
boost::fusion::unused_type my_unused;
|
||||||
|
BOOST_STATIC_ASSERT((sizeof(test_unused(my_unused)) == sizeof(boost::type_traits::yes_type)));
|
||||||
|
}
|
Reference in New Issue
Block a user