mirror of
https://github.com/boostorg/fusion.git
synced 2025-07-16 05:42:20 +02:00
Compare commits
26 Commits
boost-1.66
...
optimizati
Author | SHA1 | Date | |
---|---|---|---|
4e57acbce7 | |||
44ef9e56e6 | |||
e3b053f969 | |||
11a3f250b8 | |||
d8f608c8f1 | |||
2aea153be0 | |||
4734cf4a13 | |||
d5bd71c886 | |||
c3dec40e72 | |||
101a056a92 | |||
82f677c169 | |||
f61bffb21f | |||
4c67886cc2 | |||
38818fbe3d | |||
0a8f0f49b2 | |||
cdd1408d2b | |||
540ea0ef0c | |||
671f22b013 | |||
dfceaffc58 | |||
2c86e9d18c | |||
d8e6f406ab | |||
b42314fb02 | |||
806b621931 | |||
39fb05e40f | |||
dc47261890 | |||
099333b61d |
@ -1,5 +1,5 @@
|
||||
# Copyright 2016, 2017 Peter Dimov
|
||||
# Copyright 2017 Kohei Takahashi
|
||||
# Copyright 2017-2018 Kohei Takahashi
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
@ -167,6 +167,7 @@ install:
|
||||
- git submodule init libs/bind
|
||||
- git submodule init libs/concept_check
|
||||
- git submodule init libs/config
|
||||
- git submodule init libs/container_hash
|
||||
- git submodule init libs/conversion
|
||||
- git submodule init libs/core
|
||||
- git submodule init libs/detail
|
||||
@ -201,4 +202,4 @@ install:
|
||||
- ./b2 headers
|
||||
|
||||
script:
|
||||
- ./b2 libs/fusion/test toolset=$TOOLSET cxxstd=$CXXSTD define=RUNNING_ON_TRAVIS=1
|
||||
- ./b2 -j`(nproc || sysctl -n hw.ncpu) 2> /dev/null` libs/fusion/test toolset=$TOOLSET cxxstd=$CXXSTD
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright 2016, 2017 Peter Dimov
|
||||
# Copyright 2017 Kohei Takahashi
|
||||
# Copyright 2017-2018 Kohei Takahashi
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
@ -39,6 +39,7 @@ install:
|
||||
- git submodule init libs/bind
|
||||
- git submodule init libs/concept_check
|
||||
- git submodule init libs/config
|
||||
- git submodule init libs/container_hash
|
||||
- git submodule init libs/conversion
|
||||
- git submodule init libs/core
|
||||
- git submodule init libs/detail
|
||||
@ -71,4 +72,4 @@ install:
|
||||
build: off
|
||||
|
||||
test_script:
|
||||
- b2 libs/fusion/test toolset=%TOOLSET% define=RUNNING_ON_APPVEYOR=1
|
||||
- b2 -j%NUMBER_OF_PROCESSORS% --hash libs/fusion/test toolset=%TOOLSET%
|
||||
|
@ -2,6 +2,7 @@
|
||||
Copyright (C) 2001-2011 Joel de Guzman
|
||||
Copyright (C) 2006 Dan Marsden
|
||||
Copyright (C) 2010 Christopher Schmidt
|
||||
Copyright (C) 2018 Kohei Takahashi
|
||||
|
||||
Use, modification and distribution is subject to the Boost Software
|
||||
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -20,39 +21,37 @@
|
||||
]
|
||||
]
|
||||
|
||||
[def __spirit__ [@http://spirit.sourceforge.net Spirit]]
|
||||
[def __phoenix__ [@http://www.boost.org/libs/phoenix/index.html Phoenix]]
|
||||
[def __mpl__ [@http://www.boost.org/libs/mpl/index.html MPL]]
|
||||
[def __spirit__ [@http://boost-spirit.com/home/ Spirit]]
|
||||
[def __phoenix__ [@http://www.boost.org/libs/phoenix Phoenix]]
|
||||
[def __mpl__ [@http://www.boost.org/libs/mpl MPL]]
|
||||
[def __stl__ [@http://en.wikipedia.org/wiki/Standard_Template_Library STL]]
|
||||
[def __tuple__ [@http://www.boost.org/libs/tuple/doc/tuple_users_guide.html Boost.Tuple]]
|
||||
[def __tuple__ [@http://www.boost.org/libs/tuple Boost.Tuple]]
|
||||
[def __tr1__tuple__ [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1403.pdf TR1 Tuple]]
|
||||
[def __boost_tools__ [@http://www.boost.org/tools/index.html Boost Tools]]
|
||||
[def __spirit_list__ [@https://lists.sourceforge.net/lists/listinfo/spirit-general Spirit Mailing List]]
|
||||
[def __spirit_general__ [@news://news.gmane.org/gmane.comp.spirit.general Spirit General NNTP news portal]]
|
||||
[def __gmane__ [@http://www.gmane.org Gmane]]
|
||||
[def __mlist_archive__ [@http://news.gmane.org/gmane.comp.parsers.spirit.general]]
|
||||
[def __spirit_list__ [@https://sourceforge.net/projects/spirit/lists/spirit-general Spirit Mailing List]]
|
||||
[def __list_archive__ [@https://sourceforge.net/p/spirit/mailman/spirit-general/ archive]]
|
||||
[def __jaakko_jarvi__ [@http://www.boost.org/people/jaakko_jarvi.htm Jaakko Jarvi]]
|
||||
[def __david_abrahams__ [@http://www.boost.org/people/dave_abrahams.htm David Abrahams]]
|
||||
[def __the_forwarding_problem__ [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm The Forwarding Problem]]
|
||||
|
||||
[def __boost_any__ [@http://www.boost.org/doc/html/any.html Boost.Any]]
|
||||
[def __boost_any__ [@http://www.boost.org/libs/any Boost.Any Library]]
|
||||
[def __new_iterator_concepts__ [@http://www.boost.org/libs/iterator/doc/new-iter-concepts.html New Iterator Concepts]]
|
||||
[def __boost_array_library__ [@http://www.boost.org/doc/html/array.html Boost.Array Library]]
|
||||
[def __boost_variant_library__ [@http://www.boost.org/doc/html/variant.html Boost.Variant Library]]
|
||||
[def __boost_tuple_library__ [@http://www.boost.org/libs/tuple/doc/tuple_users_guide.html Boost.Tuple Library]]
|
||||
[def __boost_ref__ [@http://www.boost.org/doc/html/ref.html Boost.Ref]]
|
||||
[def __boost_ref_call__ [@http://www.boost.org/doc/html/ref.html `ref`]]
|
||||
[def __boost_result_of__ [@http://www.boost.org/libs/utility/utility.htm#result_of Boost.ResultOf]]
|
||||
[def __boost_array_library__ [@http://www.boost.org/libs/array Boost.Array Library]]
|
||||
[def __boost_variant_library__ [@http://www.boost.org/libs/variant Boost.Variant Library]]
|
||||
[def __boost_tuple_library__ [@http://www.boost.org/libs/tuple Boost.Tuple Library]]
|
||||
[def __boost_ref__ [@http://www.boost.org/libs/core/ref.html Ref utility]]
|
||||
[def __boost_ref_call__ [@http://www.boost.org/libs/core/ref.html `ref`]]
|
||||
[def __boost_result_of__ [@http://www.boost.org/libs/utility/utility.htm#result_of ResultOf utility]]
|
||||
[def __boost_result_of_call__ [@http://www.boost.org/libs/utility/utility.htm#result_of `boost::result_of`]]
|
||||
[def __boost_enable_if__ [@http://www.boost.org/libs/utility/enable_if.html Boost.EnableIf utility]]
|
||||
[def __boost_shared_ptr_call__ [@http://www.boost.org/libs/smart_ptr/shared_ptr.htm `boost::shared_ptr`]]
|
||||
[def __boost_func_forward__ [@http://www.boost.org/libs/functional/forward/doc/html/index.html Boost.Functional/Forward]]
|
||||
[def __boost_func_factory__ [@http://www.boost.org/libs/functional/factory/doc/html/index.html Boost.Functional/Factory]]
|
||||
[def __boost_func_hash__ [@http://www.boost.org/doc/html/hash.html Boost.Functional/Hash]]
|
||||
[def __std_pair_doc__ [@http://www.sgi.com/tech/stl/pair.html `std::pair`]]
|
||||
[def __boost_enable_if__ [@http://www.boost.org/libs/core/doc/html/core/enable_if.html EnableIf utility]]
|
||||
[def __boost_shared_ptr_call__ [@http://www.boost.org/libs/smart_ptr#shared_ptr `boost::shared_ptr`]]
|
||||
[def __boost_func_forward__ [@http://www.boost.org/libs/functional/forward Boost.Functional/Forward Library]]
|
||||
[def __boost_func_factory__ [@http://www.boost.org/libs/functional/factory Boost.Functional/Factory Library]]
|
||||
[def __boost_func_hash__ [@http://www.boost.org/doc/html/hash.html Boost.ContainerHash Library]]
|
||||
[def __std_pair_doc__ [@http://en.cppreference.com/w/cpp/utility/pair `std::pair`]]
|
||||
[def __std_tuple_doc__ [@http://en.cppreference.com/w/cpp/utility/tuple `std::tuple`]]
|
||||
[def __std_plus_doc__ [@http://www.sgi.com/tech/stl/plus.html `std::plus`]]
|
||||
[def __std_minus_doc__ [@http://www.sgi.com/tech/stl/minus.html `std::minus`]]
|
||||
[def __std_plus_doc__ [@http://en.cppreference.com/w/cpp/utility/functional/plus `std::plus`]]
|
||||
[def __std_minus_doc__ [@http://en.cppreference.com/w/cpp/utility/functional/minus `std::minus`]]
|
||||
|
||||
[def __mpl_integral_constant__ [@http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html MPL Integral Constant]]
|
||||
[def __mpl_boolean_constant__ [@http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html MPL Boolean Constant]]
|
||||
|
@ -61,11 +61,8 @@ tool. QuickBook can be found in the __boost_tools__.
|
||||
[heading Support]
|
||||
|
||||
Please direct all questions to Spirit's mailing list. You can subscribe to the
|
||||
__spirit_list__. The mailing list has a searchable archive. A search link to
|
||||
this archive is provided in __spirit__'s home page. You may also read and post
|
||||
messages to the mailing list through __spirit_general__ (thanks to __gmane__).
|
||||
The news group mirrors the mailing list. Here is a link to the archives:
|
||||
__mlist_archive__.
|
||||
__spirit_list__. The mailing list has a searchable archive. Here is a link to
|
||||
the archives: __list_archive__.
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
[/==============================================================================
|
||||
Copyright (C) 2001-2011 Joel de Guzman
|
||||
Copyright (C) 2006 Dan Marsden
|
||||
Copyright (C) 2018 Kohei Takahashi
|
||||
|
||||
Use, modification and distribution is subject to the Boost Software
|
||||
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -8,20 +9,20 @@
|
||||
===============================================================================/]
|
||||
[section References]
|
||||
|
||||
# [@http://boost.org/libs/iterator/doc/new-iter-concepts.html New Iterator Concepts],
|
||||
# [@http://www.boost.org/libs/iterator/doc/new-iter-concepts.html New Iterator Concepts],
|
||||
David Abrahams, Jeremy Siek, Thomas Witt, 2004-11-01.
|
||||
# [@http://boost.org/libs/tuple/doc/tuple_users_guide.html The Boost Tuple Library],
|
||||
# [@http://www.boost.org/libs/tuple The Boost Tuple Library],
|
||||
Jaakko Jarvi, 2001.
|
||||
# [@http://www.boost.org/libs/spirit/ Spirit Parser Library],
|
||||
# [@http://www.boost.org/libs/spirit Spirit Parser Library],
|
||||
Joel de Guzman, 2001-2006.
|
||||
# [@http://www.boost.org/libs/mpl/ The Boost MPL Library],
|
||||
# [@http://www.boost.org/libs/mpl The Boost MPL Library],
|
||||
Aleksey Gurtovoy and David Abrahams, 2002-2004.
|
||||
# [@http://www.boost.org/doc/html/array.html Boost Array],
|
||||
# [@http://www.boost.org/libs/array The Boost Array Library],
|
||||
Nicolai Josuttis, 2002-2004.
|
||||
# [@http://www.sgi.com/tech/stl/ Standard Template Library Programmer's Guide],
|
||||
Hewlett-Packard Company, 1994.
|
||||
# [@http://www.boost.org/doc/html/ref.html Boost.Ref],
|
||||
# [@http://www.boost.org/libs/core/ref.html Boost.Core / Ref utility],
|
||||
Jaakko Jarvi, Peter Dimov, Douglas Gregor, Dave Abrahams, 1999-2002.
|
||||
# [@http://www.boost.org/libs/hana The Boost Hana Library],
|
||||
Louis Dionne, 2017.
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -26,7 +26,13 @@ namespace boost { namespace fusion { namespace detail
|
||||
BOOST_FUSION_BARRIER_BEGIN
|
||||
|
||||
template <int size>
|
||||
struct as_deque;
|
||||
struct as_deque
|
||||
{
|
||||
BOOST_STATIC_ASSERT_MSG(
|
||||
size <= FUSION_MAX_DEQUE_SIZE
|
||||
, "FUSION_MAX_DEQUE_SIZE limit is too low"
|
||||
);
|
||||
};
|
||||
|
||||
template <>
|
||||
struct as_deque<0>
|
||||
|
@ -25,7 +25,13 @@ namespace boost { namespace fusion { namespace detail
|
||||
BOOST_FUSION_BARRIER_BEGIN
|
||||
|
||||
template <int size, bool is_assoc>
|
||||
struct as_map;
|
||||
struct as_map
|
||||
{
|
||||
BOOST_STATIC_ASSERT_MSG(
|
||||
size <= FUSION_MAX_MAP_SIZE
|
||||
, "FUSION_MAX_MAP_SIZE limit is too low"
|
||||
);
|
||||
};
|
||||
|
||||
template <bool is_assoc>
|
||||
struct as_map<0, is_assoc>
|
||||
|
@ -67,24 +67,21 @@ namespace boost { namespace fusion
|
||||
: base_type(std::forward<map>(seq))
|
||||
{}
|
||||
|
||||
template <typename Sequence>
|
||||
template <typename Sequence, typename = typename enable_if<traits::is_sequence<Sequence>>::type>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
map(Sequence const& seq
|
||||
, typename enable_if<traits::is_sequence<Sequence>, detail::enabler_>::type = detail::enabler)
|
||||
map(Sequence const& seq)
|
||||
: base_type(begin(seq), detail::map_impl_from_iterator())
|
||||
{}
|
||||
|
||||
template <typename Sequence>
|
||||
template <typename Sequence, typename = typename enable_if<traits::is_sequence<Sequence>>::type>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
map(Sequence& seq
|
||||
, typename enable_if<traits::is_sequence<Sequence>, detail::enabler_>::type = detail::enabler)
|
||||
map(Sequence& seq)
|
||||
: base_type(begin(seq), detail::map_impl_from_iterator())
|
||||
{}
|
||||
|
||||
template <typename Sequence>
|
||||
template <typename Sequence, typename = typename enable_if<traits::is_sequence<Sequence>>::type>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
map(Sequence&& seq
|
||||
, typename enable_if<traits::is_sequence<Sequence>, detail::enabler_>::type = detail::enabler)
|
||||
map(Sequence&& seq)
|
||||
: base_type(begin(seq), detail::map_impl_from_iterator())
|
||||
{}
|
||||
|
||||
|
@ -25,7 +25,13 @@ namespace boost { namespace fusion { namespace detail
|
||||
BOOST_FUSION_BARRIER_BEGIN
|
||||
|
||||
template <int size>
|
||||
struct as_set;
|
||||
struct as_set
|
||||
{
|
||||
BOOST_STATIC_ASSERT_MSG(
|
||||
size <= FUSION_MAX_SET_SIZE
|
||||
, "FUSION_MAX_SET_SIZE limit is too low"
|
||||
);
|
||||
};
|
||||
|
||||
template <>
|
||||
struct as_set<0>
|
||||
|
@ -25,7 +25,13 @@ namespace boost { namespace fusion { namespace detail
|
||||
BOOST_FUSION_BARRIER_BEGIN
|
||||
|
||||
template <int size>
|
||||
struct as_vector;
|
||||
struct as_vector
|
||||
{
|
||||
BOOST_STATIC_ASSERT_MSG(
|
||||
size <= FUSION_MAX_VECTOR_SIZE
|
||||
, "FUSION_MAX_VECTOR_SIZE limit is too low"
|
||||
);
|
||||
};
|
||||
|
||||
template <>
|
||||
struct as_vector<0>
|
||||
|
@ -247,14 +247,14 @@ namespace boost { namespace fusion
|
||||
|
||||
template <typename J>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
auto at_impl(J) -> decltype(at_detail<J::value>(this))
|
||||
auto at_impl(J) -> decltype(at_detail<J::value>(&std::declval<vector_data&>()))
|
||||
{
|
||||
return at_detail<J::value>(this);
|
||||
}
|
||||
|
||||
template <typename J>
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
auto at_impl(J) const -> decltype(at_detail<J::value>(this))
|
||||
auto at_impl(J) const -> decltype(at_detail<J::value>(&std::declval<vector_data const&>()))
|
||||
{
|
||||
return at_detail<J::value>(this);
|
||||
}
|
||||
|
@ -8,7 +8,6 @@
|
||||
#define FUSION_CATEGORY_OF_07202005_0308
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/support/detail/category_of.hpp>
|
||||
#include <boost/fusion/support/tag_of.hpp>
|
||||
#include <boost/type_traits/is_base_of.hpp>
|
||||
|
||||
@ -44,7 +43,10 @@ namespace boost { namespace fusion
|
||||
struct category_of_impl
|
||||
{
|
||||
template<typename T>
|
||||
struct apply : detail::fusion_category_of<T> {};
|
||||
struct apply
|
||||
{
|
||||
typedef typename T::category type;
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
|
@ -15,6 +15,7 @@
|
||||
#endif
|
||||
|
||||
namespace boost { namespace fusion { namespace detail {
|
||||
#if defined(BOOST_NO_CXX17_FOLD_EXPRESSIONS)
|
||||
template<typename ...Cond>
|
||||
struct and_impl : false_type {};
|
||||
|
||||
@ -34,6 +35,10 @@ namespace boost { namespace fusion { namespace detail {
|
||||
recursive. */
|
||||
template<typename ...Cond>
|
||||
struct and_ : and_impl1<Cond::value...> {};
|
||||
#else
|
||||
template <typename ...Cond>
|
||||
struct and_ : integral_constant<bool, ((bool)Cond::value && ...)> {};
|
||||
#endif
|
||||
}}}
|
||||
|
||||
#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,18 +9,17 @@
|
||||
#define FUSION_DETAIL_IS_MPL_SEQUENCE_29122006_1105
|
||||
|
||||
#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/and.hpp>
|
||||
#include <boost/mpl/not.hpp>
|
||||
#include <boost/type_traits/is_convertible.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
template <typename T>
|
||||
struct is_mpl_sequence
|
||||
: mpl::and_<
|
||||
mpl::not_<is_convertible<T, from_sequence_convertible_type> >
|
||||
mpl::not_<is_native_fusion_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,11 +10,10 @@
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/support/sequence_base.hpp>
|
||||
#include <boost/fusion/support/tag_of.hpp>
|
||||
#include <boost/mpl/is_sequence.hpp>
|
||||
#include <boost/mpl/or.hpp>
|
||||
#include <boost/fusion/support/detail/is_native_fusion_sequence.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
#include <boost/mpl/is_sequence.hpp>
|
||||
#include <boost/type_traits/is_convertible.hpp>
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
@ -67,10 +66,7 @@ namespace boost { namespace fusion
|
||||
>
|
||||
{};
|
||||
|
||||
template <typename Sequence, typename Enable = void>
|
||||
struct is_native_fusion_sequence
|
||||
: is_convertible<Sequence, fusion::detail::from_sequence_convertible_type>
|
||||
{};
|
||||
using detail::is_native_fusion_sequence;
|
||||
}
|
||||
}}
|
||||
|
||||
|
@ -9,7 +9,6 @@
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
#include <boost/fusion/support/detail/is_view.hpp>
|
||||
#include <boost/fusion/support/tag_of.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
@ -28,8 +27,9 @@ namespace boost { namespace fusion
|
||||
{
|
||||
template <typename T>
|
||||
struct apply
|
||||
: detail::fusion_is_view<T>
|
||||
{};
|
||||
{
|
||||
typedef typename T::is_view type;
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
|
@ -8,15 +8,16 @@
|
||||
#if !defined(FUSION_PAIR_07222005_1203)
|
||||
#define FUSION_PAIR_07222005_1203
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <iosfwd>
|
||||
|
||||
#include <utility>
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/support/detail/access.hpp>
|
||||
#include <boost/fusion/support/detail/as_fusion_element.hpp>
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/fusion/support/detail/enabler.hpp>
|
||||
#include <boost/core/enable_if.hpp>
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
#include <boost/type_traits/is_convertible.hpp>
|
||||
#include <boost/type_traits/is_lvalue_reference.hpp>
|
||||
#include <boost/type_traits/remove_cv_ref.hpp>
|
||||
|
||||
#if defined (BOOST_MSVC)
|
||||
# pragma warning(push)
|
||||
@ -33,54 +34,46 @@ namespace boost { namespace fusion
|
||||
pair()
|
||||
: second() {}
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
pair(pair const& rhs)
|
||||
: second(rhs.second) {}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
pair(pair&& rhs)
|
||||
: second(BOOST_FUSION_FWD_ELEM(Second, rhs.second)) {}
|
||||
#endif
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
pair(typename detail::call_param<Second>::type val)
|
||||
: second(val) {}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
template <typename Second2>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
pair(Second2&& val
|
||||
, typename boost::disable_if<is_lvalue_reference<Second2> >::type* /* dummy */ = 0
|
||||
, typename boost::enable_if<is_convertible<Second2, Second> >::type* /*dummy*/ = 0
|
||||
) : second(BOOST_FUSION_FWD_ELEM(Second, val)) {}
|
||||
pair(typename remove_cv_ref<Second>::type&& val)
|
||||
: second(BOOST_FUSION_FWD_ELEM(Second, val)) {}
|
||||
#endif
|
||||
|
||||
template <typename Second2>
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
pair(pair<First, Second2> const& rhs)
|
||||
pair(pair<First, Second2> const& rhs,
|
||||
typename disable_if<is_same<Second, Second2>, detail::enabler_>::type = detail::enabler,
|
||||
typename enable_if<is_convertible<Second2, Second>, detail::enabler_>::type = detail::enabler)
|
||||
: second(rhs.second) {}
|
||||
|
||||
template <typename Second2>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
pair& operator=(pair<First, Second2> const& rhs)
|
||||
{
|
||||
second = rhs.second;
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
pair& operator=(pair const& rhs)
|
||||
typename disable_if<is_same<Second, Second2>, pair&>::type
|
||||
operator=(pair<First, Second2> const& rhs)
|
||||
{
|
||||
second = rhs.second;
|
||||
return *this;
|
||||
}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
template <typename Second2>
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
pair(pair<First, Second2>&& rhs,
|
||||
typename disable_if<is_same<Second, Second2>, detail::enabler_>::type = detail::enabler,
|
||||
typename enable_if<is_convertible<Second2, Second>, detail::enabler_>::type = detail::enabler)
|
||||
: second(std::move(rhs.second)) {}
|
||||
|
||||
template <typename Second2>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
pair& operator=(pair&& rhs)
|
||||
typename disable_if<is_same<Second, Second2>, pair&>::type
|
||||
operator=(pair<First, Second2>&& rhs)
|
||||
{
|
||||
second = BOOST_FUSION_FWD_ELEM(Second, rhs.second);
|
||||
second = std::move(rhs.second);
|
||||
return *this;
|
||||
}
|
||||
#endif
|
||||
|
50
test/Jamfile
50
test/Jamfile
@ -1,7 +1,7 @@
|
||||
##==============================================================================
|
||||
# Copyright (c) 2003-2006 Joel de Guzman
|
||||
# Copyright (c) 2013 Mateusz Loskot
|
||||
# Copyright (c) 2014-2017 Kohei Takahashi
|
||||
# Copyright (c) 2014-2018 Kohei Takahashi
|
||||
#
|
||||
# Use, modification and distribution is subject to the Boost Software
|
||||
# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -9,10 +9,17 @@
|
||||
#==============================================================================
|
||||
# bring in rules for testing
|
||||
import testing ;
|
||||
import os ;
|
||||
import ../../config/checks/config : requires ;
|
||||
|
||||
if [ os.environ CI ]
|
||||
{
|
||||
CI_DEFINES = <define>CI_SKIP_KNOWN_FAILURE=1 ;
|
||||
}
|
||||
|
||||
project
|
||||
: requirements
|
||||
$(CI_DEFINES)
|
||||
;
|
||||
|
||||
{
|
||||
@ -35,7 +42,8 @@ project
|
||||
[ run algorithm/insert.cpp ]
|
||||
[ run algorithm/insert_range.cpp ]
|
||||
[ run algorithm/iter_fold.cpp ]
|
||||
[ run algorithm/move.cpp ]
|
||||
[ run algorithm/move.cpp : :
|
||||
: [ requires cxx11_rvalue_references ] ]
|
||||
[ run algorithm/none.cpp ]
|
||||
[ run algorithm/pop_back.cpp ]
|
||||
[ run algorithm/pop_front.cpp ]
|
||||
@ -99,7 +107,8 @@ project
|
||||
[ compile sequence/deque_is_constructible.cpp ]
|
||||
[ run sequence/deque_make.cpp ]
|
||||
[ run sequence/deque_misc.cpp ]
|
||||
[ run sequence/deque_move.cpp ]
|
||||
[ run sequence/deque_move.cpp : :
|
||||
: [ requires cxx11_rvalue_references ] ]
|
||||
[ run sequence/deque_mutate.cpp ]
|
||||
[ run sequence/deque_nest.cpp ]
|
||||
[ run sequence/deque_tie.cpp ]
|
||||
@ -113,7 +122,8 @@ project
|
||||
[ run sequence/map_construction.cpp ]
|
||||
[ run sequence/map_copy.cpp ]
|
||||
[ run sequence/map_misc.cpp ]
|
||||
[ run sequence/map_move.cpp ]
|
||||
[ run sequence/map_move.cpp : :
|
||||
: [ requires cxx11_rvalue_references ] ]
|
||||
[ run sequence/map_mutate.cpp ]
|
||||
[ run sequence/map_tie.cpp ]
|
||||
[ run sequence/nil.cpp ]
|
||||
@ -152,7 +162,8 @@ project
|
||||
[ run sequence/vector_iterator.cpp ]
|
||||
[ run sequence/vector_make.cpp ]
|
||||
[ run sequence/vector_misc.cpp ]
|
||||
[ run sequence/vector_move.cpp ]
|
||||
[ run sequence/vector_move.cpp : :
|
||||
: [ requires cxx11_rvalue_references ] ]
|
||||
[ run sequence/vector_mutate.cpp ]
|
||||
[ run sequence/vector_n.cpp ]
|
||||
[ run sequence/vector_nest.cpp ]
|
||||
@ -197,22 +208,28 @@ project
|
||||
[ run sequence/adt_attribute_proxy.cpp ]
|
||||
[ run sequence/define_struct.cpp ]
|
||||
[ run sequence/define_struct_empty.cpp ]
|
||||
[ run sequence/define_struct_move.cpp ]
|
||||
[ run sequence/define_struct_move.cpp : :
|
||||
: [ requires cxx11_rvalue_references ] ]
|
||||
[ run sequence/define_struct_inline.cpp ]
|
||||
[ run sequence/define_struct_inline_empty.cpp ]
|
||||
[ run sequence/define_struct_inline_move.cpp ]
|
||||
[ run sequence/define_struct_inline_move.cpp : :
|
||||
: [ requires cxx11_rvalue_references ] ]
|
||||
[ run sequence/define_assoc_struct.cpp ]
|
||||
[ run sequence/define_assoc_struct_empty.cpp ]
|
||||
[ run sequence/define_assoc_struct_move.cpp ]
|
||||
[ run sequence/define_assoc_struct_move.cpp : :
|
||||
: [ requires cxx11_rvalue_references ] ]
|
||||
[ run sequence/define_tpl_struct.cpp ]
|
||||
[ run sequence/define_tpl_struct_empty.cpp ]
|
||||
[ run sequence/define_tpl_struct_move.cpp ]
|
||||
[ run sequence/define_tpl_struct_move.cpp : :
|
||||
: [ requires cxx11_rvalue_references ] ]
|
||||
[ run sequence/define_tpl_struct_inline.cpp ]
|
||||
[ run sequence/define_tpl_struct_inline_empty.cpp ]
|
||||
[ run sequence/define_tpl_struct_inline_move.cpp ]
|
||||
[ run sequence/define_tpl_struct_inline_move.cpp : :
|
||||
: [ requires cxx11_rvalue_references ] ]
|
||||
[ run sequence/define_assoc_tpl_struct.cpp ]
|
||||
[ run sequence/define_assoc_tpl_struct_empty.cpp ]
|
||||
[ run sequence/define_assoc_tpl_struct_move.cpp ]
|
||||
[ run sequence/define_assoc_tpl_struct_move.cpp : :
|
||||
: [ requires cxx11_rvalue_references ] ]
|
||||
[ run sequence/std_tuple.cpp : :
|
||||
: [ requires cxx11_variadic_templates cxx11_hdr_tuple ] ]
|
||||
[ run sequence/std_tuple_iterator.cpp : :
|
||||
@ -237,14 +254,21 @@ project
|
||||
[ run functional/invoke_procedure.cpp ]
|
||||
[ run sequence/swap.cpp ]
|
||||
|
||||
[ compile support/is_sequence.cpp ]
|
||||
[ compile support/pair_conversion.cpp ]
|
||||
[ compile support/pair_deque.cpp ]
|
||||
[ compile support/pair_list.cpp ]
|
||||
[ compile support/pair_map.cpp ]
|
||||
[ compile support/pair_set.cpp ]
|
||||
[ compile support/pair_vector.cpp ]
|
||||
[ compile support/pair_nest.cpp ]
|
||||
[ compile support/index_sequence.cpp ]
|
||||
[ compile support/and.cpp ]
|
||||
[ compile support/index_sequence.cpp
|
||||
: [ requires cxx11_variadic_templates ] ]
|
||||
[ compile support/and.cpp
|
||||
: [ requires cxx11_variadic_templates ] ]
|
||||
[ compile support/tag_of.cpp ]
|
||||
[ compile support/pair_trivially_copyable.cpp
|
||||
: [ requires cxx11_hdr_type_traits ] ]
|
||||
|
||||
# [ compile-fail xxx.cpp ]
|
||||
|
||||
|
@ -1,13 +1,9 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2014 Kohei Takahashi
|
||||
Copyright (c) 2014,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>
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/fusion/container/vector/vector.hpp>
|
||||
#include <boost/fusion/container/list/list.hpp>
|
||||
@ -29,12 +25,3 @@ int main()
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int main()
|
||||
{
|
||||
// no thing to do
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -1,13 +1,9 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2016 Kohei Takahashi
|
||||
Copyright (c) 2016,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>
|
||||
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
|
||||
#include <utility>
|
||||
@ -69,10 +65,3 @@ int main()
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int main()
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1,13 +1,9 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2016 Kohei Takahashi
|
||||
Copyright (c) 2016-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>
|
||||
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include <boost/fusion/adapted/struct/define_struct_inline.hpp>
|
||||
#include <utility>
|
||||
@ -52,7 +48,7 @@ int main()
|
||||
}
|
||||
|
||||
// Older MSVCs don't generate move ctor by default.
|
||||
#if !(defined(RUNNING_ON_APPVEYOR) && BOOST_WORKAROUND(BOOST_MSVC, < 1900))
|
||||
#if !(defined(CI_SKIP_KNOWN_FAILURE) && BOOST_WORKAROUND(BOOST_MSVC, < 1900))
|
||||
{
|
||||
ns::value x;
|
||||
ns::value y(std::move(x)); // move
|
||||
@ -70,15 +66,8 @@ int main()
|
||||
BOOST_TEST(x.w.value == 0);
|
||||
BOOST_TEST(y.w.value == 0);
|
||||
}
|
||||
#endif // !(appveyor && msvc < 14.0)
|
||||
#endif // !(ci && msvc < 14.0)
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int main()
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1,13 +1,9 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2016 Kohei Takahashi
|
||||
Copyright (c) 2016,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>
|
||||
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include <boost/fusion/adapted/struct/define_struct.hpp>
|
||||
#include <utility>
|
||||
@ -68,10 +64,3 @@ int main()
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int main()
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1,13 +1,9 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2016 Kohei Takahashi
|
||||
Copyright (c) 2016-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>
|
||||
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include <boost/fusion/adapted/struct/define_struct_inline.hpp>
|
||||
#include <utility>
|
||||
@ -52,7 +48,7 @@ int main()
|
||||
}
|
||||
|
||||
// Older MSVCs don't generate move ctor by default.
|
||||
#if !(defined(RUNNING_ON_APPVEYOR) && BOOST_WORKAROUND(BOOST_MSVC, < 1900))
|
||||
#if !(defined(CI_SKIP_KNOWN_FAILURE) && BOOST_WORKAROUND(BOOST_MSVC, < 1900))
|
||||
{
|
||||
ns::value<wrapper> x;
|
||||
ns::value<wrapper> y(std::move(x)); // move
|
||||
@ -70,15 +66,8 @@ int main()
|
||||
BOOST_TEST(x.w.value == 0);
|
||||
BOOST_TEST(y.w.value == 0);
|
||||
}
|
||||
#endif // !(appveyor && msvc < 14.0)
|
||||
#endif // !(ci && msvc < 14.0)
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int main()
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1,13 +1,9 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2016 Kohei Takahashi
|
||||
Copyright (c) 2016,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>
|
||||
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include <boost/fusion/adapted/struct/define_struct.hpp>
|
||||
#include <utility>
|
||||
@ -68,10 +64,3 @@ int main()
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int main()
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1,16 +1,11 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2012 Joel de Guzman
|
||||
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)
|
||||
==============================================================================*/
|
||||
#define BOOST_FUSION_DONT_USE_PREPROCESSED_FILES // $$$ JDG temp $$$
|
||||
|
||||
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
|
||||
#define BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
|
||||
#include <boost/fusion/container/deque/deque.hpp>
|
||||
|
||||
#define FUSION_SEQUENCE boost::fusion::deque<std::vector<x>>
|
||||
@ -18,16 +13,9 @@
|
||||
|
||||
#include "move.hpp"
|
||||
|
||||
#else
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#endif
|
||||
|
||||
int
|
||||
main()
|
||||
int main()
|
||||
{
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
test();
|
||||
#endif
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
@ -1,15 +1,11 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2012 Joel de Guzman
|
||||
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)
|
||||
==============================================================================*/
|
||||
#define BOOST_FUSION_DONT_USE_PREPROCESSED_FILES // $$$ JDG temp $$$
|
||||
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
|
||||
#define BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
|
||||
#include <boost/fusion/container/map/map.hpp>
|
||||
|
||||
struct k1 {};
|
||||
@ -23,16 +19,9 @@ struct k2 {};
|
||||
|
||||
#include "move.hpp"
|
||||
|
||||
#else
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#endif
|
||||
|
||||
int
|
||||
main()
|
||||
int main()
|
||||
{
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
test();
|
||||
#endif
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
@ -1,15 +1,11 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2012 Joel de Guzman
|
||||
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)
|
||||
==============================================================================*/
|
||||
#define BOOST_FUSION_DONT_USE_PREPROCESSED_FILES // $$$ JDG temp $$$
|
||||
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
|
||||
#define BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
|
||||
#include <boost/fusion/container/vector/vector.hpp>
|
||||
|
||||
#define FUSION_SEQUENCE boost::fusion::vector<std::vector<x>>
|
||||
@ -17,16 +13,9 @@
|
||||
|
||||
#include "move.hpp"
|
||||
|
||||
#else
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#endif
|
||||
|
||||
int
|
||||
main()
|
||||
int main()
|
||||
{
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
test();
|
||||
#endif
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
@ -1,33 +1,28 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2016 Lee Clagett
|
||||
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>
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
||||
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include <boost/fusion/support/detail/and.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
#include <boost/type_traits/integral_constant.hpp>
|
||||
|
||||
int main() {
|
||||
using namespace boost;
|
||||
using namespace boost::fusion::detail;
|
||||
|
||||
BOOST_TEST((and_<>::value));
|
||||
BOOST_TEST(!(and_<false_type>::value));
|
||||
BOOST_TEST((and_<true_type>::value));
|
||||
BOOST_TEST(!(and_<true_type, false_type>::value));
|
||||
BOOST_TEST((and_<true_type, true_type>::value));
|
||||
BOOST_TEST(!(and_<true_type, true_type, false_type>::value));
|
||||
BOOST_TEST((and_<true_type, true_type, true_type>::value));
|
||||
BOOST_TEST((and_<true_type, mpl::true_>::value));
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#ifdef BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
||||
# error "does not meet requirements"
|
||||
#endif
|
||||
|
||||
#include <boost/fusion/support/detail/and.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
#include <boost/mpl/assert.hpp>
|
||||
|
||||
using namespace boost;
|
||||
using namespace boost::fusion::detail;
|
||||
|
||||
BOOST_MPL_ASSERT((and_<>));
|
||||
BOOST_MPL_ASSERT_NOT((and_<false_type>));
|
||||
BOOST_MPL_ASSERT((and_<true_type>));
|
||||
BOOST_MPL_ASSERT_NOT((and_<true_type, false_type>));
|
||||
BOOST_MPL_ASSERT((and_<true_type, true_type>));
|
||||
BOOST_MPL_ASSERT_NOT((and_<true_type, true_type, false_type>));
|
||||
BOOST_MPL_ASSERT((and_<true_type, true_type, true_type>));
|
||||
BOOST_MPL_ASSERT((and_<true_type, mpl::true_>));
|
||||
|
@ -1,12 +1,14 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2015 Kohei Takahashi
|
||||
Copyright (c) 2015,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>
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
||||
#ifdef BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
||||
# error "does not meet requirements"
|
||||
#endif
|
||||
|
||||
#include <boost/fusion/support/detail/index_sequence.hpp>
|
||||
#include <boost/mpl/assert.hpp>
|
||||
@ -28,5 +30,3 @@ BOOST_MPL_ASSERT((boost::is_same<detail::make_index_sequence<15>::type, detail::
|
||||
BOOST_MPL_ASSERT((boost::is_same<detail::make_index_sequence<16>::type, detail::index_sequence<0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15> >));
|
||||
BOOST_MPL_ASSERT((boost::is_same<detail::make_index_sequence<17>::type, detail::index_sequence<0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16> >));
|
||||
|
||||
#endif
|
||||
|
||||
|
17
test/support/is_sequence.cpp
Normal file
17
test/support/is_sequence.cpp
Normal file
@ -0,0 +1,17 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2018 Louis Dionne
|
||||
|
||||
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/fusion/support/is_sequence.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
|
||||
|
||||
// Make sure fusion::is_sequence and fusion::is_native_fusion_sequence can be
|
||||
// used with an incomplete type.
|
||||
struct incomplete;
|
||||
BOOST_STATIC_ASSERT(!boost::fusion::traits::is_sequence<incomplete>::value);
|
||||
BOOST_STATIC_ASSERT(!boost::fusion::traits::is_native_fusion_sequence<incomplete>::value);
|
||||
|
||||
int main() { }
|
42
test/support/pair_conversion.cpp
Normal file
42
test/support/pair_conversion.cpp
Normal file
@ -0,0 +1,42 @@
|
||||
/*=============================================================================
|
||||
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 <utility>
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/fusion/support/pair.hpp>
|
||||
|
||||
using namespace boost::fusion;
|
||||
|
||||
struct eat_int
|
||||
{
|
||||
eat_int(int);
|
||||
};
|
||||
|
||||
struct eat_pair
|
||||
{
|
||||
template <typename K, typename V>
|
||||
eat_pair(pair<K, V>);
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
pair<void, int> p;
|
||||
|
||||
pair<void, eat_int> ci(p);
|
||||
|
||||
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||
pair<void, eat_int> mi(std::move(p));
|
||||
#endif
|
||||
|
||||
// eat_pair can't be converted from int, but can be pair.
|
||||
// So pair(eat_pair) should be called rather than pair(pair<void, eat_pair>).
|
||||
pair<void, eat_pair> cp(p);
|
||||
|
||||
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||
pair<void, eat_pair> mp(std::move(p));
|
||||
#endif
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2015 Kohei Takahashi
|
||||
Copyright (c) 2015,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)
|
||||
@ -10,15 +10,20 @@
|
||||
using namespace boost::fusion;
|
||||
|
||||
template <typename C>
|
||||
void copy()
|
||||
void copy(C value)
|
||||
{
|
||||
pair<int, C> src;
|
||||
pair<int, C> src(value);
|
||||
pair<int, C> dest = src;
|
||||
boost::ignore_unused(dest);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
copy<pair<void, float> >();
|
||||
copy<pair<void, float> >(42.195f);
|
||||
copy<pair<int, float> >(42.195f);
|
||||
|
||||
float f;
|
||||
pair<void, float&> r(f);
|
||||
copy<pair<void, float&> >(r);
|
||||
}
|
||||
|
||||
|
50
test/support/pair_trivially_copyable.cpp
Normal file
50
test/support/pair_trivially_copyable.cpp
Normal file
@ -0,0 +1,50 @@
|
||||
/*=============================================================================
|
||||
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 <type_traits>
|
||||
#include <boost/fusion/support/pair.hpp>
|
||||
#include <boost/mpl/assert.hpp>
|
||||
|
||||
using namespace boost::fusion;
|
||||
|
||||
struct non_trivially_copyable
|
||||
{
|
||||
non_trivially_copyable(const non_trivially_copyable&);
|
||||
non_trivially_copyable operator=(const non_trivially_copyable&);
|
||||
};
|
||||
|
||||
struct pod { };
|
||||
|
||||
BOOST_MPL_ASSERT_NOT((std::is_trivially_copyable<void>));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<int>));
|
||||
BOOST_MPL_ASSERT_NOT((std::is_trivially_copyable<non_trivially_copyable>));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pod>));
|
||||
BOOST_MPL_ASSERT_NOT((std::is_trivially_copyable<int&>));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<void*>));
|
||||
|
||||
|
||||
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<void, int> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<int, int> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<non_trivially_copyable, int> >));
|
||||
BOOST_MPL_ASSERT_NOT((std::is_trivially_copyable<pair<int, non_trivially_copyable> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<pod, int> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<int, pod> >));
|
||||
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<void, int&> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<int, int&> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<non_trivially_copyable, int&> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<int, non_trivially_copyable&> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<int, pod&> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<int, pod&> >));
|
||||
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<void, int*> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<int, int*> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<non_trivially_copyable, int*> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<int, non_trivially_copyable*> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<int, pod*> >));
|
||||
BOOST_MPL_ASSERT((std::is_trivially_copyable<pair<int, pod*> >));
|
17
test/support/tag_of.cpp
Normal file
17
test/support/tag_of.cpp
Normal file
@ -0,0 +1,17 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2018 Louis Dionne
|
||||
|
||||
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/fusion/support/tag_of.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
|
||||
|
||||
// Make sure tag_of can be used with an incomplete type.
|
||||
struct incomplete;
|
||||
typedef boost::fusion::traits::tag_of<incomplete>::type Tag;
|
||||
BOOST_STATIC_ASSERT((boost::is_same<Tag, boost::fusion::non_fusion_tag>::value));
|
||||
|
||||
int main() { }
|
Reference in New Issue
Block a user