From aa4d67258bbd3eced0b3f3f382a7a6a9d7885349 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Thu, 20 Nov 2014 18:42:23 +0900 Subject: [PATCH 1/7] Fixed for non rv-ref supporting compiler. --- .../fusion/container/deque/detail/deque_keyed_values.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp b/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp index 0d3d3dea..6c09730d 100644 --- a/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp +++ b/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp @@ -39,7 +39,7 @@ namespace boost { namespace fusion { namespace detail , deque_keyed_values_impl::construct(tail...) ); } - +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template BOOST_FUSION_GPU_ENABLED static type forward_(Head_&& head, Tail_&&... tail) @@ -50,6 +50,7 @@ namespace boost { namespace fusion { namespace detail forward_(BOOST_FUSION_FWD_ELEM(Tail_, tail)...) ); } +#endif }; struct nil_keyed_element; @@ -58,10 +59,14 @@ namespace boost { namespace fusion { namespace detail struct deque_keyed_values_impl { typedef nil_keyed_element type; + BOOST_FUSION_GPU_ENABLED static type construct() { return type(); } + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) BOOST_FUSION_GPU_ENABLED static type forward_() { return type(); } +#endif }; template From d185bd5df6f41db418171c67e9c395b71c99feeb Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Fri, 21 Nov 2014 00:53:50 +0900 Subject: [PATCH 2/7] Use call_param for deducing type better. --- include/boost/fusion/container/deque/deque.hpp | 3 ++- include/boost/fusion/container/deque/deque_iterator.hpp | 5 +++++ include/boost/fusion/container/deque/detail/cpp03/deque.hpp | 6 ++---- .../container/deque/detail/cpp03/deque_forward_ctor.hpp | 2 +- .../deque/detail/cpp03/deque_keyed_values_call.hpp | 2 +- .../fusion/container/deque/detail/deque_keyed_values.hpp | 3 +-- .../fusion/container/map/detail/cpp03/map_forward_ctor.hpp | 2 +- 7 files changed, 13 insertions(+), 10 deletions(-) diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index 318cc96d..06fca37b 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -122,7 +122,8 @@ namespace boost { namespace fusion #endif BOOST_FUSION_GPU_ENABLED - explicit deque(Head const& head, Tail const&... tail) + explicit deque(typename detail::call_param::type head + , typename detail::call_param::type... tail) : base(detail::deque_keyed_values::construct(head, tail...)) {} diff --git a/include/boost/fusion/container/deque/deque_iterator.hpp b/include/boost/fusion/container/deque/deque_iterator.hpp index c61d6f97..f603b545 100644 --- a/include/boost/fusion/container/deque/deque_iterator.hpp +++ b/include/boost/fusion/container/deque/deque_iterator.hpp @@ -11,9 +11,14 @@ #include #include #include +#include #include #include +#include +#include #include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/container/deque/detail/cpp03/deque.hpp b/include/boost/fusion/container/deque/detail/cpp03/deque.hpp index 3b9de662..967d8f48 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/deque.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/deque.hpp @@ -18,12 +18,11 @@ #include #include #include +#include #include #include #include #include -#include -#include #include #include @@ -35,7 +34,6 @@ #include #include -#include #include #include @@ -87,7 +85,7 @@ namespace boost { namespace fusion { {} BOOST_FUSION_GPU_ENABLED - explicit deque(typename add_reference::type>::type t0) + explicit deque(typename detail::call_param::type t0) : base(t0, detail::nil_keyed_element()) {} diff --git a/include/boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp b/include/boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp index b62d4760..277811ec 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp @@ -36,7 +36,7 @@ FUSION_HASH if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) BOOST_FUSION_GPU_ENABLED -deque(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference::type>::type t)) +deque(BOOST_PP_ENUM_BINARY_PARAMS(N, typename detail::call_param::type t)) : base(detail::deque_keyed_values::construct(BOOST_PP_ENUM_PARAMS(N, t))) {} #endif diff --git a/include/boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp b/include/boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp index 5fb1164a..8ba7eba0 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp @@ -35,7 +35,7 @@ #define N BOOST_PP_ITERATION() BOOST_FUSION_GPU_ENABLED - static type construct(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference::type>::type t)) + static type construct(BOOST_PP_ENUM_BINARY_PARAMS(N, typename detail::call_param::type t)) { return type(t0, deque_keyed_values_impl< diff --git a/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp b/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp index 6c09730d..efb2b90d 100644 --- a/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp +++ b/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp @@ -9,9 +9,8 @@ #define BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901 #include +#include #include -#include -#include #include namespace boost { namespace fusion { namespace detail diff --git a/include/boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp b/include/boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp index d964cbe5..3938f9a4 100644 --- a/include/boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp +++ b/include/boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp @@ -31,7 +31,7 @@ #if N == 1 explicit #endif - map(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg)) + map(BOOST_PP_ENUM_BINARY_PARAMS(N, typename detail::call_param::type arg)) : data(BOOST_PP_ENUM_PARAMS(N, arg)) {} #undef N From d05b854c589690ea08dc373cfe1cfb1fdbd4ebd2 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Sun, 30 Nov 2014 02:27:47 +0900 Subject: [PATCH 3/7] Correct variadic based fusion::deque requirements --- include/boost/fusion/container/deque/deque_fwd.hpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/include/boost/fusion/container/deque/deque_fwd.hpp b/include/boost/fusion/container/deque/deque_fwd.hpp index 639c00e5..2f2a9fab 100644 --- a/include/boost/fusion/container/deque/deque_fwd.hpp +++ b/include/boost/fusion/container/deque/deque_fwd.hpp @@ -11,9 +11,8 @@ #include #include -#if (defined(BOOST_NO_CXX11_DECLTYPE) \ - || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) \ - || defined(BOOST_NO_CXX11_RVALUE_REFERENCES)) \ +#if (defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) \ + || defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS)) \ || (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) # if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) # undef BOOST_FUSION_HAS_VARIADIC_DEQUE @@ -25,7 +24,7 @@ #endif /////////////////////////////////////////////////////////////////////////////// -// With no decltype and variadics, we will use the C++03 version +// With no variadics, we will use the C++03 version /////////////////////////////////////////////////////////////////////////////// #if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) # include From ed9880c1612840cee487eb0fb38e119e6f95e8ee Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Sun, 30 Nov 2014 03:58:20 +0900 Subject: [PATCH 4/7] Fix out of bounds access within {front|back}_extended_deque with empty deque. The insertion point is not correct with empty deque since the range {next_down, next_up} is not half-open range. --- .../boost/fusion/container/deque/deque.hpp | 4 +- .../container/deque/detail/begin_impl.hpp | 11 +----- .../container/deque/detail/cpp03/deque.hpp | 5 +-- .../container/deque/detail/end_impl.hpp | 11 +----- test/sequence/back_extended_deque.cpp | 39 +++++++++++++++++++ test/sequence/front_extended_deque.cpp | 39 +++++++++++++++++++ 6 files changed, 86 insertions(+), 23 deletions(-) diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index 06fca37b..fdcc73ae 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -50,7 +50,7 @@ namespace boost { namespace fusion typedef bidirectional_traversal_tag category; typedef mpl::int_<0> size; typedef mpl::int_<0> next_up; - typedef mpl::int_<0> next_down; + typedef mpl::int_<-1> next_down; typedef mpl::false_ is_view; template @@ -76,7 +76,7 @@ namespace boost { namespace fusion typedef typename detail::deque_keyed_values::type base; typedef mpl::int_<(sizeof ...(Tail) + 1)> size; typedef mpl::int_ next_up; - typedef mpl::int_<((size::value == 0) ? 0 : -1)> next_down; + typedef mpl::int_<-1> next_down; typedef mpl::false_ is_view; BOOST_FUSION_GPU_ENABLED diff --git a/include/boost/fusion/container/deque/detail/begin_impl.hpp b/include/boost/fusion/container/deque/detail/begin_impl.hpp index 8e7f2633..c4eed54f 100644 --- a/include/boost/fusion/container/deque/detail/begin_impl.hpp +++ b/include/boost/fusion/container/deque/detail/begin_impl.hpp @@ -11,9 +11,6 @@ #include #include -#include -#include - namespace boost { namespace fusion { struct deque_tag; @@ -29,12 +26,8 @@ namespace boost { namespace fusion template struct apply { - typedef typename - mpl::if_c< - (Sequence::next_down::value == Sequence::next_up::value) - , deque_iterator - , deque_iterator - >::type + typedef + deque_iterator type; BOOST_FUSION_GPU_ENABLED diff --git a/include/boost/fusion/container/deque/detail/cpp03/deque.hpp b/include/boost/fusion/container/deque/detail/cpp03/deque.hpp index 967d8f48..1b92ceaf 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/deque.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/deque.hpp @@ -74,8 +74,7 @@ namespace boost { namespace fusion { typedef typename detail::deque_keyed_values::type base; typedef typename detail::deque_initial_size::type size; typedef mpl::int_ next_up; - typedef mpl::int_< - mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; + typedef mpl::int_<-1> next_down; typedef mpl::false_ is_view; #include @@ -167,7 +166,7 @@ FUSION_HASH endif typedef bidirectional_traversal_tag category; typedef mpl::int_<0> size; typedef mpl::int_<0> next_up; - typedef mpl::int_<0> next_down; + typedef mpl::int_<-1> next_down; typedef mpl::false_ is_view; template diff --git a/include/boost/fusion/container/deque/detail/end_impl.hpp b/include/boost/fusion/container/deque/detail/end_impl.hpp index 73ef85ff..4ea344a9 100644 --- a/include/boost/fusion/container/deque/detail/end_impl.hpp +++ b/include/boost/fusion/container/deque/detail/end_impl.hpp @@ -11,9 +11,6 @@ #include #include -#include -#include - namespace boost { namespace fusion { struct deque_tag; @@ -29,12 +26,8 @@ namespace boost { namespace fusion template struct apply { - typedef typename - mpl::if_c< - (Sequence::next_down::value == Sequence::next_up::value) - , deque_iterator - , deque_iterator - >::type + typedef + deque_iterator type; BOOST_FUSION_GPU_ENABLED diff --git a/test/sequence/back_extended_deque.cpp b/test/sequence/back_extended_deque.cpp index edae9276..368ec0c2 100644 --- a/test/sequence/back_extended_deque.cpp +++ b/test/sequence/back_extended_deque.cpp @@ -23,6 +23,45 @@ int main() { using namespace boost::fusion; + { + typedef deque<> initial_deque_type; + initial_deque_type initial_deque; + typedef back_extended_deque extended_type; + extended_type extended(initial_deque, 101L); + + BOOST_TEST(size(extended) == 1); + BOOST_TEST(extended == make_vector(101L)); + BOOST_TEST(*begin(extended) == 101L); + BOOST_TEST(*prior(end(extended)) == 101L); + BOOST_TEST(distance(begin(extended), end(extended)) == 1); + } + { + namespace mpl = boost::mpl; + typedef deque<> initial_deque_type; + typedef back_extended_deque extended_type; + + BOOST_MPL_ASSERT((boost::is_same::type, long>)); + BOOST_MPL_ASSERT((boost::is_same::type>::type, long>)); + BOOST_MPL_ASSERT((mpl::equal_to::type, mpl::int_<1> >)); + } + { + long l(101L); + typedef deque<> initial_deque_type; + initial_deque_type initial_deque; + typedef back_extended_deque extended_type; + extended_type extended(initial_deque, l); + BOOST_TEST(extended == make_vector(101L)); + + long l2(202L); + extended_type extended2(initial_deque_type(), l2); + + extended = extended2; + + BOOST_TEST(extended == make_vector(202L)); + + BOOST_TEST(l == l2); + } + { typedef deque initial_deque_type; initial_deque_type initial_deque(1, 'a'); diff --git a/test/sequence/front_extended_deque.cpp b/test/sequence/front_extended_deque.cpp index d1c90343..cdbedeb3 100644 --- a/test/sequence/front_extended_deque.cpp +++ b/test/sequence/front_extended_deque.cpp @@ -23,6 +23,45 @@ int main() { using namespace boost::fusion; + { + typedef deque<> initial_deque_type; + initial_deque_type initial_deque; + typedef front_extended_deque extended_type; + extended_type extended(initial_deque, 1); + + BOOST_TEST(size(extended) == 1); + BOOST_TEST(extended == make_vector(1)); + BOOST_TEST(*begin(extended) == 1); + BOOST_TEST(*prior(end(extended)) == 1); + BOOST_TEST(distance(begin(extended), end(extended)) == 1); + } + { + namespace mpl = boost::mpl; + typedef deque<> initial_deque_type; + typedef front_extended_deque extended_type; + + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + BOOST_MPL_ASSERT((boost::is_same::type>::type, int>)); + BOOST_MPL_ASSERT((mpl::equal_to::type, mpl::int_<1> >)); + } + { + int i(1); + typedef deque<> initial_deque_type; + initial_deque_type initial_deque; + typedef front_extended_deque extended_type; + extended_type extended(initial_deque, i); + BOOST_TEST(extended == make_vector(1)); + + int i2(2); + extended_type extended2(initial_deque_type(), i2); + + extended = extended2; + + BOOST_TEST(extended == make_vector(2)); + + BOOST_TEST(i == i2); + } + { typedef deque initial_deque_type; initial_deque_type initial_deque('a', 101L); From 223c7d520f85971b4c5439b6b2b0592a1286790d Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Sun, 30 Nov 2014 14:29:03 +0900 Subject: [PATCH 5/7] Fix overload resolution failure. Because the ctor `deque(U &&...)` is also performed as `deque(U const&...)`. --- include/boost/fusion/container/deque/deque.hpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index fdcc73ae..ffb1277e 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -127,12 +127,6 @@ namespace boost { namespace fusion : base(detail::deque_keyed_values::construct(head, tail...)) {} - template - BOOST_FUSION_GPU_ENABLED - explicit deque(Head_ const& head, Tail_ const&... tail) - : base(detail::deque_keyed_values::construct(head, tail...)) - {} - #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template >::type @@ -142,6 +136,14 @@ namespace boost { namespace fusion : base(detail::deque_keyed_values ::forward_(BOOST_FUSION_FWD_ELEM(Head_, head), BOOST_FUSION_FWD_ELEM(Tail_, tail)...)) {} +#else + template >::type + > + BOOST_FUSION_GPU_ENABLED + explicit deque(Head_ const& head, Tail_ const&... tail) + : base(detail::deque_keyed_values::construct(head, tail...)) + {} #endif template From 24e95c34fb6d659fcb1078874b5eb7c3c0a05eda Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Mon, 1 Dec 2014 03:42:38 +0900 Subject: [PATCH 6/7] Add tests for #9914 --- test/Jamfile | 6 ++++++ test/support/pair_container.hpp | 27 +++++++++++++++++++++++++++ test/support/pair_deque.cpp | 17 +++++++++++++++++ test/support/pair_list.cpp | 17 +++++++++++++++++ test/support/pair_map.cpp | 17 +++++++++++++++++ test/support/pair_set.cpp | 17 +++++++++++++++++ test/support/pair_vector.cpp | 17 +++++++++++++++++ 7 files changed, 118 insertions(+) create mode 100644 test/support/pair_container.hpp create mode 100644 test/support/pair_deque.cpp create mode 100644 test/support/pair_list.cpp create mode 100644 test/support/pair_map.cpp create mode 100644 test/support/pair_set.cpp create mode 100644 test/support/pair_vector.cpp diff --git a/test/Jamfile b/test/Jamfile index 5036ab07..8a459b81 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -179,6 +179,12 @@ project [ run functional/invoke_procedure.cpp : : : : ] [ run sequence/swap.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-fail xxx.cpp : : : : ] ; diff --git a/test/support/pair_container.hpp b/test/support/pair_container.hpp new file mode 100644 index 00000000..3e84f058 --- /dev/null +++ b/test/support/pair_container.hpp @@ -0,0 +1,27 @@ +/*============================================================================= + Copyright (c) 2014 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 +#include + +using namespace boost::fusion; + +template +void copy() +{ + pair src; + pair dest = src; + boost::ignore_unused(dest); +} + +void test() +{ + copy >(); + copy >(); + copy >(); +} + diff --git a/test/support/pair_deque.cpp b/test/support/pair_deque.cpp new file mode 100644 index 00000000..27da30ec --- /dev/null +++ b/test/support/pair_deque.cpp @@ -0,0 +1,17 @@ +/*============================================================================= + Copyright (c) 2014 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 + +#define FUSION_SEQUENCE deque +#define TEST_TYPE int +#include "./pair_container.hpp" + +int main() +{ + test(); +} + diff --git a/test/support/pair_list.cpp b/test/support/pair_list.cpp new file mode 100644 index 00000000..ce478ff6 --- /dev/null +++ b/test/support/pair_list.cpp @@ -0,0 +1,17 @@ +/*============================================================================= + Copyright (c) 2014 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 + +#define FUSION_SEQUENCE list +#define TEST_TYPE int +#include "./pair_container.hpp" + +int main() +{ + test(); +} + diff --git a/test/support/pair_map.cpp b/test/support/pair_map.cpp new file mode 100644 index 00000000..d472ba26 --- /dev/null +++ b/test/support/pair_map.cpp @@ -0,0 +1,17 @@ +/*============================================================================= + Copyright (c) 2014 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 + +#define FUSION_SEQUENCE map +#define TEST_TYPE pair +#include "./pair_container.hpp" + +int main() +{ + test(); +} + diff --git a/test/support/pair_set.cpp b/test/support/pair_set.cpp new file mode 100644 index 00000000..b346a8ba --- /dev/null +++ b/test/support/pair_set.cpp @@ -0,0 +1,17 @@ +/*============================================================================= + Copyright (c) 2014 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 + +#define FUSION_SEQUENCE set +#define TEST_TYPE int +#include "./pair_container.hpp" + +int main() +{ + test(); +} + diff --git a/test/support/pair_vector.cpp b/test/support/pair_vector.cpp new file mode 100644 index 00000000..62a4f2b5 --- /dev/null +++ b/test/support/pair_vector.cpp @@ -0,0 +1,17 @@ +/*============================================================================= + Copyright (c) 2014 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 + +#define FUSION_SEQUENCE vector +#define TEST_TYPE int +#include "./pair_container.hpp" + +int main() +{ + test(); +} + From b7febc887ab561a64b26f87df457b9644b2cb16e Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Tue, 9 Dec 2014 19:54:53 +0900 Subject: [PATCH 7/7] Flat includes for std::tuple --- include/boost/fusion/include/std_tuple.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/boost/fusion/include/std_tuple.hpp diff --git a/include/boost/fusion/include/std_tuple.hpp b/include/boost/fusion/include/std_tuple.hpp new file mode 100644 index 00000000..9c9d8a1a --- /dev/null +++ b/include/boost/fusion/include/std_tuple.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2014 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 FUSION_INCLUDE_STD_TUPLE +#define FUSION_INCLUDE_STD_TUPLE + +#include +#include + +#endif