diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index 6fd3e1b0..d8692397 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -83,23 +83,29 @@ namespace boost { namespace fusion deque() {} - template + template >::type + > BOOST_FUSION_GPU_ENABLED - deque(deque const& seq) + deque(deque const& seq) : base(seq) {} - template + template >::type + > BOOST_FUSION_GPU_ENABLED - deque(deque& seq) + deque(deque& seq) : base(seq) {} #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) - template + template >::type + > BOOST_FUSION_GPU_ENABLED - deque(deque&& seq) - : base(std::forward>(seq)) + deque(deque&& seq) + : base(std::forward>(seq)) {} #endif @@ -127,7 +133,9 @@ namespace boost { namespace fusion {} #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) - template + template >::type + > BOOST_FUSION_GPU_ENABLED explicit deque(Head_&& head, Tail_&&... tail) : base(detail::deque_keyed_values diff --git a/test/Jamfile b/test/Jamfile index e74b7a95..29ed7774 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -55,6 +55,7 @@ project [ run algorithm/zip_ignore.cpp : : : : ] [ run algorithm/flatten.cpp : : : : ] + [ run sequence/as_deque.cpp : : : : ] [ run sequence/as_list.cpp : : : : ] [ run sequence/as_map.cpp : : : : ] [ run sequence/as_set.cpp : : : : ] diff --git a/test/sequence/as_deque.cpp b/test/sequence/as_deque.cpp new file mode 100644 index 00000000..0c30bfb4 --- /dev/null +++ b/test/sequence/as_deque.cpp @@ -0,0 +1,60 @@ +/*============================================================================= + Copyright (c) 2014 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 +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +int main() { + using namespace boost::fusion; + using namespace boost; + + BOOST_TEST(as_deque(make_vector()) == make_deque()); + BOOST_TEST(as_deque(make_vector(1)) == make_deque(1)); + BOOST_TEST(as_deque(make_vector(1, '2')) == make_deque(1, '2')); + BOOST_TEST(as_deque(make_vector(1, '2', 3.3f)) == make_deque(1, '2', 3.3f)); + + BOOST_TEST(as_deque(make_list()) == make_deque()); + BOOST_TEST(as_deque(make_list(1)) == make_deque(1)); + BOOST_TEST(as_deque(make_list(1, '2')) == make_deque(1, '2')); + BOOST_TEST(as_deque(make_list(1, '2', 3.3f)) == make_deque(1, '2', 3.3f)); + + { + deque<> xs; + BOOST_TEST(as_deque(push_back(xs, 1)) == make_deque(1)); + } + + { + deque xs(1); + BOOST_TEST(as_deque(push_back(xs, '2')) == make_deque(1, '2')); + } + + { + deque xs(1, '2'); + BOOST_TEST(as_deque(push_back(xs, 3.3f)) == make_deque(1, '2', 3.3f)); + } + + { + deque<> xs; + BOOST_TEST( + as_deque(push_front(xs, make_deque(1, '2', 3.3f))) == + make_deque(make_deque(1, '2', 3.3f)) + ); + + BOOST_TEST(as_deque(make_deque(make_deque(1))) == make_deque(make_deque(1))); + } + + return boost::report_errors(); +}