-Last revised: May 22, 2017 at 13:46:31 GMT |
+Last revised: May 23, 2017 at 17:21:43 GMT |
|
diff --git a/doc/mp11.qbk b/doc/mp11.qbk
index db40f52..51e6b83 100644
--- a/doc/mp11.qbk
+++ b/doc/mp11.qbk
@@ -29,7 +29,7 @@
[section Reference]
-The contents of the library are in namespace `boost::mp11`, unless specified otherwise.
+The contents of the library are in namespace `boost::mp11`.
[include mp11/integral.qbk]
[include mp11/list.qbk]
diff --git a/doc/mp11/examples.qbk b/doc/mp11/examples.qbk
index 93aad48..a54a458 100644
--- a/doc/mp11/examples.qbk
+++ b/doc/mp11/examples.qbk
@@ -42,7 +42,6 @@ Writing all those type combinations by hand is unwieldy, error prone, and worst
how we can leverage Mp11 to automate the task:
#include
- #include
#include
#include
#include
@@ -70,7 +69,7 @@ how we can leverage Mp11 to automate the task:
int main()
{
using L = std::tuple;
- boost::tuple_for_each( mp_product(), [](auto&& x){ test_result(x); } );
+ tuple_for_each( mp_product(), [](auto&& x){ test_result(x); } );
}
How does it work?
diff --git a/doc/mp11/integer_sequence.qbk b/doc/mp11/integer_sequence.qbk
index f0604b6..199634a 100644
--- a/doc/mp11/integer_sequence.qbk
+++ b/doc/mp11/integer_sequence.qbk
@@ -6,9 +6,7 @@
/ http://www.boost.org/LICENSE_1_0.txt)
/]
-[section:integer_sequence Integer Sequences, ``]
-
-The contents of this header are defined in namespace `boost`.
+[section:integer_sequence Integer Sequences, ``]
[section `integer_sequence`]
template struct integer_sequence
diff --git a/doc/mp11/tuple_for_each.qbk b/doc/mp11/tuple_for_each.qbk
index 2b06fcd..4eb6b9e 100644
--- a/doc/mp11/tuple_for_each.qbk
+++ b/doc/mp11/tuple_for_each.qbk
@@ -6,9 +6,7 @@
/ http://www.boost.org/LICENSE_1_0.txt)
/]
-[section:tuple_for_each A "for each" algorithm for tuple-like types, ``]
-
-The contents of this header are defined in namespace `boost`.
+[section:tuple_for_each A "for each" algorithm for tuple-like types, ``]
[section `tuple_for_each`]
template constexpr F tuple_for_each(Tp&& tp, F&& f);
diff --git a/include/boost/mp11.hpp b/include/boost/mp11.hpp
index 4241337..05a51ca 100644
--- a/include/boost/mp11.hpp
+++ b/include/boost/mp11.hpp
@@ -16,5 +16,7 @@
#include
#include
#include
+#include
+#include
#endif // #ifndef BOOST_MP11_HPP_INCLUDED
diff --git a/include/boost/mp11/algorithm.hpp b/include/boost/mp11/algorithm.hpp
index 1762502..9f0a6f7 100644
--- a/include/boost/mp11/algorithm.hpp
+++ b/include/boost/mp11/algorithm.hpp
@@ -17,7 +17,7 @@
#include
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/include/boost/integer_sequence.hpp b/include/boost/mp11/integer_sequence.hpp
similarity index 84%
rename from include/boost/integer_sequence.hpp
rename to include/boost/mp11/integer_sequence.hpp
index 9ddfc99..08e3120 100644
--- a/include/boost/integer_sequence.hpp
+++ b/include/boost/mp11/integer_sequence.hpp
@@ -1,10 +1,19 @@
-#ifndef BOOST_INTEGER_SEQUENCE_HPP_INCLUDED
-#define BOOST_INTEGER_SEQUENCE_HPP_INCLUDED
+#ifndef BOOST_MP11_INTEGER_SEQUENCE_HPP_INCLUDED
+#define BOOST_MP11_INTEGER_SEQUENCE_HPP_INCLUDED
+
+// Copyright 2015, 2017 Peter Dimov.
+//
+// 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
namespace boost
{
+namespace mp11
+{
// integer_sequence
template struct integer_sequence
@@ -82,6 +91,7 @@ template using make_index_sequence = make_integer_sequence using index_sequence_for = make_integer_sequence;
+} // namespace mp11
} // namespace boost
-#endif // #ifndef BOOST_INTEGER_SEQUENCE_HPP_INCLUDED
+#endif // #ifndef BOOST_MP11_INTEGER_SEQUENCE_HPP_INCLUDED
diff --git a/include/boost/tuple_for_each.hpp b/include/boost/mp11/tuple_for_each.hpp
similarity index 57%
rename from include/boost/tuple_for_each.hpp
rename to include/boost/mp11/tuple_for_each.hpp
index 8e3d766..a58098e 100644
--- a/include/boost/tuple_for_each.hpp
+++ b/include/boost/mp11/tuple_for_each.hpp
@@ -1,7 +1,14 @@
-#ifndef BOOST_TUPLE_FOR_EACH_HPP_INCLUDED
-#define BOOST_TUPLE_FOR_EACH_HPP_INCLUDED
+#ifndef BOOST_MP11_TUPLE_FOR_EACH_HPP_INCLUDED
+#define BOOST_MP11_TUPLE_FOR_EACH_HPP_INCLUDED
-#include
+// Copyright 2015, 2017 Peter Dimov.
+//
+// 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
@@ -11,11 +18,13 @@
namespace boost
{
+namespace mp11
+{
namespace detail
{
-template BOOST_CONSTEXPR F tuple_for_each_impl( Tp && tp, boost::integer_sequence, F && f )
+template BOOST_CONSTEXPR F tuple_for_each_impl( Tp && tp, integer_sequence, F && f )
{
using A = int[sizeof...(J)];
return (void)A{ ((void)f(std::get(std::forward(tp))), 0)... }, std::forward(f);
@@ -23,7 +32,7 @@ template BOOST_CONSTEXPR F tuple_for_each_i
#if BOOST_WORKAROUND( BOOST_MSVC, <= 1800 )
-template BOOST_CONSTEXPR F tuple_for_each_impl( Tp && tp, boost::integer_sequence, F && f )
+template BOOST_CONSTEXPR F tuple_for_each_impl( Tp && tp, integer_sequence, F && f )
{
return std::forward(f);
}
@@ -34,10 +43,11 @@ template BOOST_CONSTEXPR F tuple_for_each_impl( Tp && tp, boo
template BOOST_CONSTEXPR F tuple_for_each( Tp && tp, F && f )
{
- using seq = boost::make_index_sequence::type>::value>;
+ using seq = make_index_sequence::type>::value>;
return detail::tuple_for_each_impl( std::forward(tp), seq(), std::forward(f) );
}
+} // namespace mp11
} // namespace boost
#endif // #ifndef BOOST_TUPLE_FOR_EACH_HPP_INCLUDED
diff --git a/test/integer_sequence.cpp b/test/integer_sequence.cpp
index 190b985..bc489ab 100644
--- a/test/integer_sequence.cpp
+++ b/test/integer_sequence.cpp
@@ -7,47 +7,53 @@
// http://www.boost.org/LICENSE_1_0.txt
-#include
+#include
#include
#include
int main()
{
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
+ using boost::mp11::integer_sequence;
+ using boost::mp11::make_integer_sequence;
+ using boost::mp11::index_sequence;
+ using boost::mp11::make_index_sequence;
+ using boost::mp11::index_sequence_for;
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::index_sequence<>>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::index_sequence<0>>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::index_sequence<0, 1>>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::index_sequence<0, 1, 2>>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::index_sequence<0, 1, 2, 3>>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, integer_sequence>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::index_sequence<>>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::index_sequence<0>>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::index_sequence<0, 1>>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::index_sequence<0, 1, 2>>));
- BOOST_TEST_TRAIT_TRUE((std::is_same, boost::index_sequence<0, 1, 2, 3>>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, index_sequence<>>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, index_sequence<0>>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, index_sequence<0, 1>>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, index_sequence<0, 1, 2>>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, index_sequence<0, 1, 2, 3>>));
+
+ BOOST_TEST_TRAIT_TRUE((std::is_same, index_sequence<>>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, index_sequence<0>>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, index_sequence<0, 1>>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, index_sequence<0, 1, 2>>));
+ BOOST_TEST_TRAIT_TRUE((std::is_same, index_sequence<0, 1, 2, 3>>));
return boost::report_errors();
}
diff --git a/test/tuple_for_each.cpp b/test/tuple_for_each.cpp
index e8880dd..449fd15 100644
--- a/test/tuple_for_each.cpp
+++ b/test/tuple_for_each.cpp
@@ -7,7 +7,7 @@
// http://www.boost.org/LICENSE_1_0.txt
-#include
+#include
#include
#include
#include
@@ -16,13 +16,15 @@
int main()
{
+ using boost::mp11::tuple_for_each;
+
{
std::tuple tp{ 1, 2, 3 };
{
int s = 0;
- boost::tuple_for_each( tp, [&]( int x ){ s = s * 10 + x; } );
+ tuple_for_each( tp, [&]( int x ){ s = s * 10 + x; } );
BOOST_TEST_EQ( s, 123 );
}
@@ -30,7 +32,7 @@ int main()
{
int s = 0;
- boost::tuple_for_each( std::move(tp), [&]( int x ){ s = s * 10 + x; } );
+ tuple_for_each( std::move(tp), [&]( int x ){ s = s * 10 + x; } );
BOOST_TEST_EQ( s, 123 );
}
@@ -44,7 +46,7 @@ int main()
int s = 0;
- boost::tuple_for_each( std::move(tp), [&]( std::unique_ptr p ){ s = s * 10 + *p; } );
+ tuple_for_each( std::move(tp), [&]( std::unique_ptr p ){ s = s * 10 + *p; } );
BOOST_TEST_EQ( s, 123 );
}
@@ -57,7 +59,7 @@ int main()
{
int s = 0;
- boost::tuple_for_each( tp, [&]( int x ){ s = s * 10 + x; } );
+ tuple_for_each( tp, [&]( int x ){ s = s * 10 + x; } );
BOOST_TEST_EQ( s, 12 );
}
@@ -65,7 +67,7 @@ int main()
{
int s = 0;
- boost::tuple_for_each( std::move(tp), [&]( int x ){ s = s * 10 + x; } );
+ tuple_for_each( std::move(tp), [&]( int x ){ s = s * 10 + x; } );
BOOST_TEST_EQ( s, 12 );
}
@@ -77,7 +79,7 @@ int main()
{
int s = 0;
- boost::tuple_for_each( tp, [&]( int x ){ s = s * 10 + x; } );
+ tuple_for_each( tp, [&]( int x ){ s = s * 10 + x; } );
BOOST_TEST_EQ( s, 123 );
}
@@ -85,7 +87,7 @@ int main()
{
int s = 0;
- boost::tuple_for_each( std::move(tp), [&]( int x ){ s = s * 10 + x; } );
+ tuple_for_each( std::move(tp), [&]( int x ){ s = s * 10 + x; } );
BOOST_TEST_EQ( s, 123 );
}
@@ -94,15 +96,15 @@ int main()
{
std::tuple<> tp;
- BOOST_TEST_EQ( boost::tuple_for_each( tp, 11 ), 11 );
- BOOST_TEST_EQ( boost::tuple_for_each( std::move( tp ), 12 ), 12 );
+ BOOST_TEST_EQ( tuple_for_each( tp, 11 ), 11 );
+ BOOST_TEST_EQ( tuple_for_each( std::move( tp ), 12 ), 12 );
}
{
std::array tp;
- BOOST_TEST_EQ( boost::tuple_for_each( tp, 11 ), 11 );
- BOOST_TEST_EQ( boost::tuple_for_each( std::move( tp ), 12 ), 12 );
+ BOOST_TEST_EQ( tuple_for_each( tp, 11 ), 11 );
+ BOOST_TEST_EQ( tuple_for_each( std::move( tp ), 12 ), 12 );
}
return boost::report_errors();
diff --git a/test/tuple_for_each_cx.cpp b/test/tuple_for_each_cx.cpp
index 305d737..730f6d2 100644
--- a/test/tuple_for_each_cx.cpp
+++ b/test/tuple_for_each_cx.cpp
@@ -6,7 +6,7 @@
// See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt
-#include
+#include
#include
// Technically std::tuple isn't constexpr enabled in C++11, but it works with libstdc++
@@ -33,7 +33,7 @@ int main()
{
{
constexpr std::tuple tp{ 1, 2, 3 };
- constexpr auto r = boost::tuple_for_each( tp, assert_is_integral() );
+ constexpr auto r = boost::mp11::tuple_for_each( tp, assert_is_integral() );
(void)r;
}
@@ -42,7 +42,7 @@ int main()
{
constexpr std::tuple<> tp;
- constexpr auto r = boost::tuple_for_each( tp, 11 );
+ constexpr auto r = boost::mp11::tuple_for_each( tp, 11 );
static_assert( r == 11, "r == 11" );
}