1
0
Fork 0
mirror of https://github.com/bolero-MURAKAMI/Sprout synced 2025-08-03 12:49:50 +00:00

add bool_constant [N4334]

This commit is contained in:
bolero-MURAKAMI 2014-12-10 19:54:12 +09:00
parent fbb95d9068
commit a1f6d6ffc3
35 changed files with 198 additions and 106 deletions

View file

@ -23,8 +23,7 @@ namespace sprout {
{};
template<typename Tup, std::size_t First, std::size_t Last>
struct all_of_impl<Tup, First, Last, false>
: public sprout::integral_constant<
bool,
: public sprout::bool_constant<
sprout::tpp::detail::all_of_impl<Tup, First, (First + Last) / 2>::value
&& sprout::tpp::detail::all_of_impl<Tup, (First + Last) / 2, Last>::value
>
@ -46,7 +45,7 @@ namespace sprout {
//
template<bool... Values>
struct all_of_c
: public sprout::tpp::all_of<sprout::integral_constant<bool, Values>...>
: public sprout::tpp::all_of<sprout::bool_constant<Values>...>
{};
} // namespace tpp
} // namespace sprout

View file

@ -23,8 +23,7 @@ namespace sprout {
{};
template<typename Tup, std::size_t First, std::size_t Last>
struct any_of_impl<Tup, First, Last, false>
: public sprout::integral_constant<
bool,
: public sprout::bool_constant<
sprout::tpp::detail::any_of_impl<Tup, First, (First + Last) / 2>::value
|| sprout::tpp::detail::any_of_impl<Tup, (First + Last) / 2, Last>::value
>
@ -46,7 +45,7 @@ namespace sprout {
//
template<bool... Values>
struct any_of_c
: public sprout::tpp::any_of<sprout::integral_constant<bool, Values>...>
: public sprout::tpp::any_of<sprout::bool_constant<Values>...>
{};
} // namespace tpp
} // namespace sprout

View file

@ -19,12 +19,11 @@ namespace sprout {
namespace detail {
template<typename Tup, std::size_t First, std::size_t Last, bool = (Last - First == 1)>
struct none_of_impl
: public sprout::integral_constant<bool, !std::tuple_element<First, Tup>::type::value>
: public sprout::bool_constant<!std::tuple_element<First, Tup>::type::value>
{};
template<typename Tup, std::size_t First, std::size_t Last>
struct none_of_impl<Tup, First, Last, false>
: public sprout::integral_constant<
bool,
: public sprout::bool_constant<
sprout::tpp::detail::none_of_impl<Tup, First, (First + Last) / 2>::value
&& sprout::tpp::detail::none_of_impl<Tup, (First + Last) / 2, Last>::value
>
@ -46,7 +45,7 @@ namespace sprout {
//
template<bool... Values>
struct none_of_c
: public sprout::tpp::none_of<sprout::integral_constant<bool, Values>...>
: public sprout::tpp::none_of<sprout::bool_constant<Values>...>
{};
} // namespace tpp
} // namespace sprout

View file

@ -19,12 +19,11 @@ namespace sprout {
namespace detail {
template<typename Tup, std::size_t First, std::size_t Last, bool = (Last - First == 1)>
struct one_of_impl_1
: public sprout::integral_constant<bool, !std::tuple_element<First, Tup>::type::value>
: public sprout::bool_constant<!std::tuple_element<First, Tup>::type::value>
{};
template<typename Tup, std::size_t First, std::size_t Last>
struct one_of_impl_1<Tup, First, Last, false>
: public sprout::integral_constant<
bool,
: public sprout::bool_constant<
sprout::tpp::detail::one_of_impl_1<Tup, First, (First + Last) / 2>::value
&& sprout::tpp::detail::one_of_impl_1<Tup, (First + Last) / 2, Last>::value
>
@ -36,8 +35,7 @@ namespace sprout {
{};
template<typename Tup, std::size_t First, std::size_t Last>
struct one_of_impl<Tup, First, Last, false>
: public sprout::integral_constant<
bool,
: public sprout::bool_constant<
sprout::tpp::detail::one_of_impl<Tup, First, (First + Last) / 2>::value
? sprout::tpp::detail::one_of_impl_1<Tup, (First + Last) / 2, Last>::value
: sprout::tpp::detail::one_of_impl<Tup, (First + Last) / 2, Last>::value
@ -60,7 +58,7 @@ namespace sprout {
//
template<bool... Values>
struct one_of_c
: public sprout::tpp::one_of<sprout::integral_constant<bool, Values>...>
: public sprout::tpp::one_of<sprout::bool_constant<Values>...>
{};
// namespace detail {
// template<bool... Values>
@ -83,7 +81,7 @@ namespace sprout {
// {};
// template<bool... Tail>
// struct one_of_impl<false, Tail...>
// : public sprout::integral_constant<bool, sprout::tpp::detail::one_of_impl<Tail...>::value>
// : public sprout::bool_constant<sprout::tpp::detail::one_of_impl<Tail...>::value>
// {};
// } // namespace detail
// //