update boost
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::accessors`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -17,7 +17,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/core/dispatch.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename S>
|
||||
struct accessors_t {
|
||||
#ifndef BOOST_HANA_CONFIG_DISABLE_CONCEPT_CHECKS
|
||||
@@ -51,6 +51,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
>>
|
||||
: S::hana_accessors_impl
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_ACCESSORS_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines the `BOOST_HANA_ADAPT_ADT` macro.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines the `BOOST_HANA_ADAPT_STRUCT` macro.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::adjust`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/equal.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs, typename Value, typename F>
|
||||
constexpr auto adjust_t::operator()(Xs&& xs, Value&& value, F&& f) const {
|
||||
@@ -50,6 +50,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
);
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_ADJUST_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::adjust_if`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/transform.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs, typename Pred, typename F>
|
||||
constexpr auto adjust_if_t::operator()(Xs&& xs, Pred const& pred, F const& f) const {
|
||||
@@ -73,6 +73,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
detail::apply_if<Pred, F>{pred, f});
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_ADJUST_IF_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::all`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/functional/id.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs>
|
||||
constexpr auto all_t::operator()(Xs&& xs) const {
|
||||
@@ -43,6 +43,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
static constexpr auto apply(Xs&& xs)
|
||||
{ return hana::all_of(static_cast<Xs&&>(xs), hana::id); }
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_ALL_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::all_of`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/not.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs, typename Pred>
|
||||
constexpr auto all_of_t::operator()(Xs&& xs, Pred&& pred) const {
|
||||
@@ -46,6 +46,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
hana::compose(hana::not_, static_cast<Pred&&>(pred))));
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_ALL_OF_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::and_`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/if.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename X, typename Y>
|
||||
constexpr decltype(auto) and_t::operator()(X&& x, Y&& y) const {
|
||||
@@ -53,6 +53,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
return hana::if_(x, static_cast<Y&&>(y), x);
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_AND_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::any`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/functional/id.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs>
|
||||
constexpr auto any_t::operator()(Xs&& xs) const {
|
||||
@@ -43,6 +43,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
static constexpr auto apply(Xs&& xs)
|
||||
{ return hana::any_of(static_cast<Xs&&>(xs), hana::id); }
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_ANY_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::any_of`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -31,7 +31,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <cstddef>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs, typename Pred>
|
||||
constexpr auto any_of_t::operator()(Xs&& xs, Pred&& pred) const {
|
||||
@@ -187,6 +187,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
hana::compose(static_cast<Pred&&>(pred), hana::first));
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_ANY_OF_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::ap`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -23,7 +23,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/transform.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename A, bool condition>
|
||||
struct ap_impl<A, when<condition>> : default_ {
|
||||
template <typename ...Args>
|
||||
@@ -73,6 +73,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
);
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_AP_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::append`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -26,7 +26,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs, typename X>
|
||||
constexpr auto append_t::operator()(Xs&& xs, X&& x) const {
|
||||
@@ -69,6 +69,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
std::make_index_sequence<N>{});
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_APPEND_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines macros to perform different kinds of assertions.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::at` and `boost::hana::at_c`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -21,7 +21,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <cstddef>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs, typename N>
|
||||
constexpr decltype(auto) at_t::operator()(Xs&& xs, N const& n) const {
|
||||
@@ -52,6 +52,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
constexpr decltype(auto) at_c(Xs&& xs) {
|
||||
return hana::at(static_cast<Xs&&>(xs), hana::size_t<n>{});
|
||||
}
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_AT_HPP
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
@file
|
||||
Defines `boost::hana::at_key`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
@copyright Jason Rice 2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Copyright Jason Rice 2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -34,7 +34,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs, typename Key>
|
||||
constexpr decltype(auto) at_key_t::operator()(Xs&& xs, Key const& key) const {
|
||||
@@ -92,6 +92,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
return accessor(static_cast<X&&>(x));
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_AT_KEY_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::back`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -21,7 +21,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <cstddef>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs>
|
||||
constexpr decltype(auto) back_t::operator()(Xs&& xs) const {
|
||||
@@ -48,6 +48,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
return hana::at_c<len - 1>(static_cast<Xs&&>(xs));
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_BACK_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::basic_tuple`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -32,7 +32,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
namespace detail {
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// basic_tuple_impl<n, Xn>
|
||||
@@ -42,10 +42,18 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
struct from_other { };
|
||||
|
||||
template <typename Indices, typename ...Xn>
|
||||
#ifdef BOOST_HANA_WORKAROUND_MSVC_EMPTYBASE
|
||||
struct __declspec(empty_bases) basic_tuple_impl;
|
||||
#else
|
||||
struct basic_tuple_impl;
|
||||
#endif
|
||||
|
||||
template <std::size_t ...n, typename ...Xn>
|
||||
#ifdef BOOST_HANA_WORKAROUND_MSVC_EMPTYBASE
|
||||
struct __declspec(empty_bases) basic_tuple_impl<std::index_sequence<n...>, Xn...>
|
||||
#else
|
||||
struct basic_tuple_impl<std::index_sequence<n...>, Xn...>
|
||||
#endif
|
||||
: detail::ebo<bti<n>, Xn>...
|
||||
{
|
||||
static constexpr std::size_t size_ = sizeof...(Xn);
|
||||
@@ -193,7 +201,7 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
static constexpr auto apply(Xs&& xs, N const&) {
|
||||
constexpr std::size_t len = detail::decay<Xs>::type::size_;
|
||||
return drop_front_helper<N::value>(static_cast<Xs&&>(xs), std::make_index_sequence<
|
||||
N::value < len ? len - N::value : 0
|
||||
(N::value < len) ? len - N::value : 0
|
||||
>{});
|
||||
}
|
||||
};
|
||||
@@ -251,6 +259,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
return hana::size_t<sizeof...(Xn)>{};
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_BASIC_TUPLE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines the `Logical` and `Comparable` models of `boost::hana::integral_constant`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -31,7 +31,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// integral_constant
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -157,7 +157,8 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
|
||||
if (N > 2) {
|
||||
bool starts_with_zero = arr[0] == '0';
|
||||
bool is_hex = starts_with_zero && arr[1] == 'x';
|
||||
bool is_hex =
|
||||
starts_with_zero && (arr[1] == 'x' || arr[1] == 'X');
|
||||
bool is_binary = starts_with_zero && arr[1] == 'b';
|
||||
|
||||
if (is_hex) {
|
||||
@@ -266,6 +267,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
apply(hana::false_ const&, Then&&, Else&& e)
|
||||
{ return static_cast<Else&&>(e); }
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_BOOL_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::cartesian_product`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -26,7 +26,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs>
|
||||
constexpr auto cartesian_product_t::operator()(Xs&& xs) const {
|
||||
@@ -108,6 +108,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
return hana::make<S>();
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CARTESIAN_PRODUCT_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::chain`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/transform.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs, typename F>
|
||||
constexpr decltype(auto) chain_t::operator()(Xs&& xs, F&& f) const {
|
||||
@@ -45,6 +45,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
static_cast<F&&>(f)));
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CHAIN_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::comparing`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -17,7 +17,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/equal.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
namespace detail {
|
||||
template <typename F>
|
||||
struct equal_by {
|
||||
@@ -39,6 +39,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
return detail::equal_by<typename detail::decay<F>::type>{static_cast<F&&>(f)};
|
||||
}
|
||||
//! @endcond
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_COMPARING_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::concat`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -25,7 +25,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs, typename Ys>
|
||||
constexpr auto concat_t::operator()(Xs&& xs, Ys&& ys) const {
|
||||
@@ -75,6 +75,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
std::make_index_sequence<yi>{});
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCAT_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Master header for the `boost/hana/concept/` subdirectory.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Applicative`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/lift.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename A>
|
||||
struct Applicative
|
||||
: hana::integral_constant<bool,
|
||||
@@ -28,6 +28,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
!is_default<lift_impl<typename tag_of<A>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_APPLICATIVE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Comonad`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -21,7 +21,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/extract.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename W>
|
||||
struct Comonad
|
||||
: hana::integral_constant<bool,
|
||||
@@ -30,6 +30,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
!is_default<extend_impl<typename tag_of<W>::type>>::value)
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_COMONAD_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Comparable`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/equal.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename T>
|
||||
struct Comparable
|
||||
: hana::integral_constant<bool,
|
||||
@@ -27,6 +27,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
typename tag_of<T>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_COMPARABLE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Constant`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -19,13 +19,13 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/value.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename C>
|
||||
struct Constant
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<value_impl<typename tag_of<C>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_CONSTANT_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::EuclideanRing`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/mod.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename R>
|
||||
struct EuclideanRing
|
||||
: hana::integral_constant<bool,
|
||||
@@ -30,6 +30,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
typename tag_of<R>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_EUCLIDEAN_RING_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Foldable`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/unpack.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename T>
|
||||
struct Foldable
|
||||
: hana::integral_constant<bool,
|
||||
@@ -28,6 +28,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
!is_default<unpack_impl<typename tag_of<T>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_FOLDABLE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Functor`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/transform.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename F>
|
||||
struct Functor
|
||||
: hana::integral_constant<bool,
|
||||
@@ -28,6 +28,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
!is_default<adjust_if_impl<typename tag_of<F>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_FUNCTOR_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Group`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/negate.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename G>
|
||||
struct Group
|
||||
: hana::integral_constant<bool,
|
||||
@@ -29,6 +29,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
typename tag_of<G>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_GROUP_HPP
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
@file
|
||||
Defines `boost::hana::Hashable`.
|
||||
|
||||
@copyright Louis Dionne 2016
|
||||
@copyright Jason Rice 2016
|
||||
Copyright Louis Dionne 2016
|
||||
Copyright Jason Rice 2016
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,13 +20,13 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/hash.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename T>
|
||||
struct Hashable
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<hash_impl<typename tag_of<T>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_HASHABLE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::IntegralConstant`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -17,7 +17,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
namespace detail {
|
||||
template <typename C, typename Tag = typename tag_of<C>::type>
|
||||
struct integral_constant_dispatch
|
||||
@@ -38,6 +38,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
: detail::integral_constant_dispatch<C>
|
||||
{ };
|
||||
//! @endcond
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_INTEGRAL_CONSTANT_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Iterable`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -21,7 +21,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/is_empty.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename It>
|
||||
struct Iterable
|
||||
: hana::integral_constant<bool,
|
||||
@@ -30,6 +30,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
!is_default<is_empty_impl<typename tag_of<It>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_ITERABLE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Logical`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -21,7 +21,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/while.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename L>
|
||||
struct Logical
|
||||
: hana::integral_constant<bool,
|
||||
@@ -30,6 +30,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
!is_default<while_impl<typename tag_of<L>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_LOGICAL_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Metafunction`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -17,7 +17,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
namespace detail {
|
||||
template <typename F, typename Tag = typename tag_of<F>::type>
|
||||
struct metafunction_dispatch
|
||||
@@ -36,6 +36,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
struct Metafunction
|
||||
: detail::metafunction_dispatch<F>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_METAFUNCTION_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Monad`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/flatten.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename M>
|
||||
struct Monad
|
||||
: hana::integral_constant<bool,
|
||||
@@ -28,6 +28,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
!is_default<chain_impl<typename tag_of<M>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_MONAD_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::MonadPlus`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/empty.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename M>
|
||||
struct MonadPlus
|
||||
: hana::integral_constant<bool,
|
||||
@@ -28,6 +28,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
!is_default<empty_impl<typename tag_of<M>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_MONAD_PLUS_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Monoid`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/zero.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename M>
|
||||
struct Monoid
|
||||
: hana::integral_constant<bool,
|
||||
@@ -29,6 +29,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
typename tag_of<M>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_MONOID_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Orderable`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/less.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename Ord>
|
||||
struct Orderable
|
||||
: hana::integral_constant<bool,
|
||||
@@ -27,6 +27,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
typename tag_of<Ord>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_ORDERABLE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Product`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/second.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename P>
|
||||
struct Product
|
||||
: hana::integral_constant<bool,
|
||||
@@ -28,6 +28,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
!is_default<second_impl<typename tag_of<P>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_PRODUCT_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Ring`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/one.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename R>
|
||||
struct Ring
|
||||
: hana::integral_constant<bool,
|
||||
@@ -29,6 +29,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
typename tag_of<R>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_RING_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Searchable`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/find_if.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename S>
|
||||
struct Searchable
|
||||
: hana::integral_constant<bool,
|
||||
@@ -28,6 +28,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
!is_default<find_if_impl<typename tag_of<S>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_SEARCHABLE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Sequence`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -18,7 +18,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
namespace detail {
|
||||
template <typename S, typename Tag = typename hana::tag_of<S>::type>
|
||||
struct sequence_dispatch
|
||||
@@ -39,6 +39,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
: detail::sequence_dispatch<S>
|
||||
{ };
|
||||
//! @endcond
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_SEQUENCE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::Struct`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -19,13 +19,13 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename S>
|
||||
struct Struct
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<accessors_impl<typename tag_of<S>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_STRUCT_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines configuration macros used throughout the library.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,27 +20,39 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#if defined(_MSC_VER) && !defined(__clang__) // MSVC
|
||||
// This must be checked first, because otherwise it produces a fatal
|
||||
// error due to unrecognized #warning directives used below.
|
||||
# pragma message("Warning: the native Microsoft compiler is not supported due to lack of proper C++14 support.")
|
||||
|
||||
# if _MSC_VER < 1915
|
||||
# pragma message("Warning: the native Microsoft compiler is not supported due to lack of proper C++14 support.")
|
||||
# else
|
||||
// 1. Active issues
|
||||
// Multiple copy/move ctors
|
||||
# define BOOST_HANA_WORKAROUND_MSVC_MULTIPLECTOR_106654
|
||||
|
||||
// 2. Issues fixed in the development branch of MSVC
|
||||
// Forward declaration of class template member function returning decltype(auto)
|
||||
# define BOOST_HANA_WORKAROUND_MSVC_DECLTYPEAUTO_RETURNTYPE_662735
|
||||
|
||||
// 3. Issues fixed conditionally
|
||||
// Requires __declspec(empty_bases)
|
||||
// Empty base optimization
|
||||
# define BOOST_HANA_WORKAROUND_MSVC_EMPTYBASE
|
||||
|
||||
// Requires /experimental:preprocessor
|
||||
// Variadic macro expansion
|
||||
# if !defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL
|
||||
# define BOOST_HANA_WORKAROUND_MSVC_PREPROCESSOR_616033
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#elif defined(__clang__) && defined(_MSC_VER) // Clang-cl (Clang for Windows)
|
||||
|
||||
# define BOOST_HANA_CONFIG_CLANG BOOST_HANA_CONFIG_VERSION( \
|
||||
__clang_major__, __clang_minor__, __clang_patchlevel__)
|
||||
|
||||
# if BOOST_HANA_CONFIG_CLANG < BOOST_HANA_CONFIG_VERSION(3, 5, 0)
|
||||
# warning "Versions of Clang prior to 3.5.0 are not supported by Hana."
|
||||
# endif
|
||||
|
||||
# if _MSC_VER < 1900
|
||||
# warning "Clang-cl is only supported with the -fms-compatibility-version parameter set to 19 and above."
|
||||
# endif
|
||||
|
||||
#elif defined(__clang__) && defined(__apple_build_version__) // Apple's Clang
|
||||
|
||||
# if __apple_build_version__ >= 6020049
|
||||
# define BOOST_HANA_CONFIG_CLANG BOOST_HANA_CONFIG_VERSION(3, 6, 0)
|
||||
# else
|
||||
# warning "Versions of Apple's Clang prior to the one shipped with Xcode 6.3 are not supported by Hana."
|
||||
# endif
|
||||
|
||||
#elif defined(__clang__) // genuine Clang
|
||||
@@ -48,23 +60,11 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
# define BOOST_HANA_CONFIG_CLANG BOOST_HANA_CONFIG_VERSION( \
|
||||
__clang_major__, __clang_minor__, __clang_patchlevel__)
|
||||
|
||||
# if BOOST_HANA_CONFIG_CLANG < BOOST_HANA_CONFIG_VERSION(3, 5, 0)
|
||||
# warning "Versions of Clang prior to 3.5.0 are not supported by Hana."
|
||||
# endif
|
||||
|
||||
#elif defined(__GNUC__) // GCC
|
||||
|
||||
# define BOOST_HANA_CONFIG_GCC BOOST_HANA_CONFIG_VERSION( \
|
||||
__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
|
||||
|
||||
# if BOOST_HANA_CONFIG_GCC < BOOST_HANA_CONFIG_VERSION(6, 0, 0)
|
||||
# warning "Versions of GCC prior to 6.0.0 are not supported by Hana."
|
||||
# endif
|
||||
|
||||
#else
|
||||
|
||||
# warning "Your compiler is not officially supported by Hana or it was not detected properly."
|
||||
|
||||
#endif
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
@@ -72,54 +72,14 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#if (__cplusplus < 201400)
|
||||
# if defined(_MSC_VER)
|
||||
# pragma message("Warning: Your compiler doesn't provide C++14 or higher capabilities. Try adding the compiler flag '-std=c++14' or '-std=c++1y'.")
|
||||
# if _MSC_VER < 1915
|
||||
# pragma message("Warning: Your compiler doesn't provide C++14 or higher capabilities. Try adding the compiler flag '-std=c++14' or '-std=c++1y'.")
|
||||
# endif
|
||||
# else
|
||||
# warning "Your compiler doesn't provide C++14 or higher capabilities. Try adding the compiler flag '-std=c++14' or '-std=c++1y'."
|
||||
# endif
|
||||
#endif
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// Detect the standard library
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// We include this header, which normally defines the proper detection macros.
|
||||
// At least, libc++ and libstdc++ do.
|
||||
#include <cstddef>
|
||||
|
||||
#if defined(_LIBCPP_VERSION)
|
||||
|
||||
# define BOOST_HANA_CONFIG_LIBCPP BOOST_HANA_CONFIG_VERSION( \
|
||||
((_LIBCPP_VERSION) / 1000) % 10, 0, (_LIBCPP_VERSION) % 1000)
|
||||
|
||||
# if BOOST_HANA_CONFIG_LIBCPP < BOOST_HANA_CONFIG_VERSION(1, 0, 101)
|
||||
# warning "Versions of libc++ prior to the one shipped with Clang 3.5.0 are not supported by Hana."
|
||||
# endif
|
||||
|
||||
#elif defined(__GLIBCXX__)
|
||||
|
||||
// We do not define a macro to keep track of libstdc++'s version, because
|
||||
// we have no scalable way of associating a value of __GLIBCXX__ to the
|
||||
// corresponding GCC release. Instead, we just check that the release date
|
||||
// of the libstdc++ in use is recent enough, which should indicate that it
|
||||
// was released with a GCC >= 5.1, which in turn indicates good enough C++14
|
||||
// support.
|
||||
# if __GLIBCXX__ < 20150422 // --> the libstdc++ shipped with GCC 5.1.0
|
||||
# warning "Versions of libstdc++ prior to the one shipped with GCC 5.1.0 are not supported by Hana for lack of full C++14 support."
|
||||
# endif
|
||||
|
||||
# define BOOST_HANA_CONFIG_LIBSTDCXX
|
||||
|
||||
#elif defined(_MSC_VER)
|
||||
|
||||
# define BOOST_HANA_CONFIG_LIBMSVCCXX
|
||||
|
||||
#else
|
||||
|
||||
# warning "Your standard library is not officially supported by Hana or it was not detected properly."
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// Caveats and other compiler-dependent options
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
@@ -144,19 +104,15 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
# define BOOST_HANA_CONSTEXPR_LAMBDA /* nothing */
|
||||
#endif
|
||||
|
||||
// There's a bug in std::tuple_cat in libc++ right now.
|
||||
// See http://llvm.org/bugs/show_bug.cgi?id=22806.
|
||||
#if defined(BOOST_HANA_CONFIG_LIBCPP)
|
||||
# define BOOST_HANA_CONFIG_LIBCPP_HAS_BUG_22806
|
||||
// `BOOST_HANA_INLINE_VARIABLE` expands to `inline` when C++17 inline variables
|
||||
// are supported, and to nothing otherwise. This allows marking global variables
|
||||
// defined in a header as `inline` to avoid potential ODR violations.
|
||||
#if defined(__cplusplus) && __cplusplus > 201402L
|
||||
# define BOOST_HANA_INLINE_VARIABLE inline
|
||||
#else
|
||||
# define BOOST_HANA_INLINE_VARIABLE /* nothing */
|
||||
#endif
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// Namespace macros
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#define BOOST_HANA_NAMESPACE_BEGIN namespace boost { namespace hana {
|
||||
|
||||
#define BOOST_HANA_NAMESPACE_END }}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// Library features and options that can be tweaked by users
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::contains` and `boost::hana::in`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/equal.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs, typename Key>
|
||||
constexpr auto contains_t::operator()(Xs&& xs, Key&& key) const {
|
||||
@@ -46,6 +46,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
hana::equal.to(static_cast<X&&>(x)));
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CONTAINS_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines the @ref group-core module.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::common` and `boost::hana::common_t`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -22,7 +22,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// common
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -104,6 +104,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
>> {
|
||||
using type = typename common<A, typename B::value_type>::type;
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CORE_COMMON_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::default_` and `boost::hana::is_default`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -17,7 +17,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
template <typename Method, typename>
|
||||
struct is_default : std::false_type { };
|
||||
|
||||
@@ -27,6 +27,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
)>
|
||||
: std::true_type
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CORE_DEFAULT_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Includes all the headers needed to setup tag-dispatching.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::is_a` and `boost::hana::is_an`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// is_a
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -36,6 +36,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
constexpr auto operator()(T const&) const
|
||||
{ return hana::is_a<DataType, T>; }
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CORE_IS_A_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::make`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -17,7 +17,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/core/when.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Datatype, typename>
|
||||
struct make_impl : make_impl<Datatype, when<true>> { };
|
||||
@@ -32,7 +32,7 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
|
||||
template <typename ...X>
|
||||
static constexpr auto make_helper(long, X&& ...) {
|
||||
static_assert((sizeof...(X), false),
|
||||
static_assert(((void) sizeof...(X), false),
|
||||
"there exists no constructor for the given data type");
|
||||
}
|
||||
|
||||
@@ -40,6 +40,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
static constexpr decltype(auto) apply(X&& ...x)
|
||||
{ return make_helper(int{}, static_cast<X&&>(x)...); }
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CORE_MAKE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::tag_of` and `boost::hana::tag_of_t`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -15,8 +15,10 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/when.hpp>
|
||||
|
||||
#include <type_traits>
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename T, typename>
|
||||
struct tag_of : tag_of<T, when<true>> { };
|
||||
@@ -44,6 +46,14 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename T> struct tag_of<T const volatile> : tag_of<T> { };
|
||||
template <typename T> struct tag_of<T&> : tag_of<T> { };
|
||||
template <typename T> struct tag_of<T&&> : tag_of<T> { };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
namespace detail {
|
||||
template <typename T>
|
||||
struct has_idempotent_tag
|
||||
: std::is_same<hana::tag_of_t<T>,
|
||||
std::remove_const_t<std::remove_reference_t<T>>>
|
||||
{ };
|
||||
}
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CORE_TAG_OF_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::to` and related utilities.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -27,7 +27,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// to
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -191,6 +191,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
static constexpr decltype(auto) apply(Xs&& xs)
|
||||
{ return hana::unpack(static_cast<Xs&&>(xs), hana::make<S>); }
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CORE_TO_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::when` and `boost::hana::when_valid`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::count`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/equal.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs, typename Value>
|
||||
constexpr auto count_t::operator()(Xs&& xs, Value&& value) const {
|
||||
@@ -45,6 +45,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
hana::equal.to(static_cast<Value&&>(value)));
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_COUNT_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::count_if`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -25,7 +25,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs, typename Pred>
|
||||
constexpr auto count_if_t::operator()(Xs&& xs, Pred&& pred) const {
|
||||
@@ -87,6 +87,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
);
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_COUNT_IF_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::cycle`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -28,7 +28,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! @cond
|
||||
template <typename Xs, typename N>
|
||||
constexpr auto cycle_t::operator()(Xs&& xs, N const& n) const {
|
||||
@@ -122,6 +122,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
std::make_index_sequence<n * len>{});
|
||||
}
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_CYCLE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines the `BOOST_HANA_DEFINE_STRUCT` macro.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines several `constexpr` algorithms.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -18,7 +18,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
// Do not call this swap, otherwise it can get picked up by ADL and conflict
|
||||
// with std::swap (see https://github.com/boostorg/hana/issues/297).
|
||||
template <typename T>
|
||||
@@ -181,6 +181,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
smallest = first;
|
||||
return smallest;
|
||||
}
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_ALGORITHM_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::any_of`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -16,7 +16,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
std::false_type expand(...);
|
||||
|
||||
template <template <typename ...> class Predicate, typename ...T>
|
||||
@@ -41,6 +41,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
struct any_of
|
||||
: decltype(any_of_impl<Predicate, T...>(int{}))
|
||||
{ };
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_ANY_OF_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::array`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -17,7 +17,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <cstddef>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <typename N>
|
||||
constexpr N factorial(N n) {
|
||||
N result = 1;
|
||||
@@ -100,6 +100,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
return M < N || detail::lexicographical_compare(a.begin(), a.end(), b.begin(), b.end());
|
||||
}
|
||||
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_ARRAY_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::CanonicalConstant`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -13,7 +13,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/config.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
//! @ingroup group-details
|
||||
//! Tag representing a canonical `Constant`.
|
||||
//!
|
||||
@@ -26,7 +26,7 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
struct CanonicalConstant {
|
||||
using value_type = T;
|
||||
};
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
|
||||
#include <boost/hana/concept/constant.hpp>
|
||||
@@ -37,7 +37,7 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Constant
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -75,6 +75,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
struct IntegralConstant<detail::CanonicalConstant<T>> {
|
||||
static constexpr bool value = std::is_integral<T>::value;
|
||||
};
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_CANONICAL_CONSTANT_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines concepts from the Standard library.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -17,7 +17,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
//! @cond
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// EqualityComparable
|
||||
@@ -73,6 +73,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
>
|
||||
{ };
|
||||
//! @endcond
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_CONCEPTS_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::create`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -14,7 +14,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/detail/decay.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
//! @ingroup group-details
|
||||
//! Implementation of the generic `std::make_xxx` pattern for arbitrary
|
||||
//! `xxx`s.
|
||||
@@ -28,6 +28,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
};
|
||||
}
|
||||
};
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_CREATE_HPP
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Defines a replacement for `std::decay`, which is sometimes too slow at
|
||||
compile-time.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -16,7 +16,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
//! @ingroup group-details
|
||||
//! Equivalent to `std::decay`, except faster.
|
||||
//!
|
||||
@@ -43,6 +43,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
struct decay<T, R(A...)> { using type = R(*)(A...); };
|
||||
template <typename T, typename R, typename ...A>
|
||||
struct decay<T, R(A..., ...)> { using type = R(*)(A..., ...); };
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_DECAY_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `BOOST_HANA_DISPATCH_IF`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -15,7 +15,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
struct deleted_implementation {
|
||||
template <typename ...T>
|
||||
static constexpr auto apply(T&& ...) = delete;
|
||||
@@ -51,6 +51,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
#else
|
||||
#define BOOST_HANA_DISPATCH_IF(IMPL, ...) IMPL
|
||||
#endif
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_DISPATCH_IF_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::ebo`.
|
||||
|
||||
@copyright Louis Dionne 2013-2016
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -105,11 +105,11 @@ namespace _hana {
|
||||
{ return static_cast<V&&>(x.data_); }
|
||||
} // end namespace _hana
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
namespace detail {
|
||||
using ::_hana::ebo;
|
||||
using ::_hana::ebo_get;
|
||||
}
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_EBO_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::fast_and`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -15,11 +15,11 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <bool ...b>
|
||||
struct fast_and
|
||||
: std::is_same<fast_and<b...>, fast_and<(b, true)...>>
|
||||
: std::is_same<fast_and<b...>, fast_and<((void) b, true)...>>
|
||||
{ };
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_FAST_AND_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::first_unsatisfied_index`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -17,7 +17,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <bool, typename Pred, typename ...Xs>
|
||||
struct find_tail_size;
|
||||
|
||||
@@ -51,6 +51,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
>;
|
||||
}
|
||||
};
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_FIRST_UNSATISFIED_INDEX_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::has_[nontrivial_]common_embedding`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -18,7 +18,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <template <typename...> class Concept, typename T, typename U, typename = void>
|
||||
struct has_common_embedding_impl : std::false_type { };
|
||||
|
||||
@@ -64,6 +64,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
template <template <typename...> class Concept, typename T, typename U>
|
||||
using has_nontrivial_common_embedding =
|
||||
typename has_nontrivial_common_embedding_impl<Concept, T, U>::type;
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_HAS_COMMON_EMBEDDING_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::has_duplicates`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -18,7 +18,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <typename T, typename ...U>
|
||||
constexpr std::size_t pack_count() {
|
||||
std::size_t c = 0;
|
||||
@@ -60,6 +60,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
!detail::fast_and<(detail::pack_count<T, T...>() == 1)...>::value
|
||||
;
|
||||
};
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_HAS_DUPLICATES_HPP
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::hash_table`.
|
||||
|
||||
@copyright Louis Dionne 2016
|
||||
@copyright Jason Rice 2016
|
||||
Copyright Louis Dionne 2016
|
||||
Copyright Jason Rice 2016
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -27,7 +27,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <typename Hash, std::size_t ...i>
|
||||
struct bucket { };
|
||||
|
||||
@@ -140,6 +140,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
bucket<typename decltype(hana::hash(std::declval<KeyAtIndex<i>>()))::type, i>...
|
||||
>;
|
||||
};
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_HASH_TABLE_HPP
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::index_if`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
@copyright Jason Rice 2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Copyright Jason Rice 2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <std::size_t i, std::size_t N, bool Done>
|
||||
struct index_if_helper;
|
||||
|
||||
@@ -50,6 +50,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
using type = typename index_if_helper<0, sizeof...(Xs), false>
|
||||
::template f<Pred, Xs...>;
|
||||
};
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_INDEX_IF_HPP
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Defines the barebones `boost::hana::integral_constant` template, but no
|
||||
operations on it.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -17,7 +17,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace boost { namespace hana {
|
||||
//! Tag representing `hana::integral_constant`.
|
||||
//! @relates hana::integral_constant
|
||||
template <typename T>
|
||||
@@ -231,7 +231,11 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
};
|
||||
#else
|
||||
template <typename T, T v>
|
||||
#ifdef BOOST_HANA_WORKAROUND_MSVC_EMPTYBASE
|
||||
struct __declspec(empty_bases) integral_constant
|
||||
#else
|
||||
struct integral_constant
|
||||
#endif
|
||||
: std::integral_constant<T, v>
|
||||
, detail::operators::adl<integral_constant<T, v>>
|
||||
{
|
||||
@@ -240,6 +244,6 @@ BOOST_HANA_NAMESPACE_BEGIN
|
||||
using hana_tag = integral_constant_tag<T>;
|
||||
};
|
||||
#endif
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
}} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_INTEGRAL_CONSTANT_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines macros for commonly used type traits.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::nested_by`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -17,7 +17,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/functional/partial.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
//! @cond
|
||||
template <typename Algorithm>
|
||||
template <typename Predicate, typename Object>
|
||||
@@ -35,6 +35,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
static_cast<Predicate&&>(predicate));
|
||||
}
|
||||
//! @endcond
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_NESTED_BY_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Forward declares `boost::hana::detail::nested_by`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -13,7 +13,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/config.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <typename Algorithm>
|
||||
struct nested_by_t {
|
||||
template <typename Predicate, typename Object>
|
||||
@@ -50,6 +50,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
|
||||
template <typename Algorithm>
|
||||
constexpr nested_by_t<Algorithm> nested_by<Algorithm>::by;
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_NESTED_BY_FWD_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::nested_than`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -17,13 +17,13 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/functional/partial.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
//! @cond
|
||||
template <typename Algorithm>
|
||||
template <typename X>
|
||||
constexpr decltype(auto) nested_than_t<Algorithm>::operator()(X&& x) const
|
||||
{ return hana::partial(hana::flip(Algorithm{}), static_cast<X&&>(x)); }
|
||||
//! @endcond
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_NESTED_THAN_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Forward declares `boost::hana::detail::nested_than`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -13,7 +13,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/config.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <typename Algorithm>
|
||||
struct nested_than_t {
|
||||
template <typename X>
|
||||
@@ -42,6 +42,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
|
||||
template <typename Algorithm>
|
||||
constexpr nested_than_t<Algorithm> nested_than<Algorithm>::than;
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_NESTED_THAN_FWD_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::nested_to`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -16,13 +16,13 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/functional/partial.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
//! @cond
|
||||
template <typename Algorithm>
|
||||
template <typename X>
|
||||
constexpr decltype(auto) nested_to_t<Algorithm>::operator()(X&& x) const
|
||||
{ return hana::partial(Algorithm{}, static_cast<X&&>(x)); }
|
||||
//! @endcond
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_NESTED_TO_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Forward declares `boost::hana::detail::nested_to`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -13,7 +13,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/config.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <typename Algorithm>
|
||||
struct nested_to_t {
|
||||
template <typename X>
|
||||
@@ -42,6 +42,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
|
||||
template <typename Algorithm>
|
||||
constexpr nested_to_t<Algorithm> nested_to<Algorithm>::to;
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_NESTED_TO_FWD_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::operators::adl`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -13,7 +13,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/config.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail { namespace operators {
|
||||
namespace boost { namespace hana { namespace detail { namespace operators {
|
||||
//! @ingroup group-details
|
||||
//! Enables [ADL](http://en.cppreference.com/w/cpp/language/adl) in the
|
||||
//! `hana::detail::operators` namespace.
|
||||
@@ -29,6 +29,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail { namespace operators {
|
||||
//! is not a concern, `adl<>` can simply be used.
|
||||
template <typename ...>
|
||||
struct adl { };
|
||||
}} BOOST_HANA_NAMESPACE_END
|
||||
}} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_OPERATORS_ADL_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines arithmetic operators.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -22,7 +22,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <typename Tag>
|
||||
struct arithmetic_operators {
|
||||
static constexpr bool value = false;
|
||||
@@ -73,6 +73,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
constexpr auto operator%(X&& x, Y&& y)
|
||||
{ return hana::mod(static_cast<X&&>(x), static_cast<Y&&>(y)); }
|
||||
} // end namespace operators
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_OPERATORS_ARITHMETIC_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines operators for Comparables.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -18,7 +18,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <typename Tag>
|
||||
struct comparable_operators {
|
||||
static constexpr bool value = false;
|
||||
@@ -26,19 +26,27 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
|
||||
namespace operators {
|
||||
template <typename X, typename Y, typename = typename std::enable_if<
|
||||
detail::comparable_operators<typename hana::tag_of<X>::type>::value ||
|
||||
detail::comparable_operators<typename hana::tag_of<Y>::type>::value
|
||||
!detail::has_idempotent_tag<X>::value &&
|
||||
!detail::has_idempotent_tag<Y>::value &&
|
||||
(detail::comparable_operators<
|
||||
typename hana::tag_of<X>::type>::value ||
|
||||
detail::comparable_operators<
|
||||
typename hana::tag_of<Y>::type>::value)
|
||||
>::type>
|
||||
constexpr auto operator==(X&& x, Y&& y)
|
||||
{ return hana::equal(static_cast<X&&>(x), static_cast<Y&&>(y)); }
|
||||
|
||||
template <typename X, typename Y, typename = typename std::enable_if<
|
||||
detail::comparable_operators<typename hana::tag_of<X>::type>::value ||
|
||||
detail::comparable_operators<typename hana::tag_of<Y>::type>::value
|
||||
!detail::has_idempotent_tag<X>::value &&
|
||||
!detail::has_idempotent_tag<Y>::value &&
|
||||
(detail::comparable_operators<
|
||||
typename hana::tag_of<X>::type>::value ||
|
||||
detail::comparable_operators<
|
||||
typename hana::tag_of<Y>::type>::value)
|
||||
>::type>
|
||||
constexpr auto operator!=(X&& x, Y&& y)
|
||||
{ return hana::not_equal(static_cast<X&&>(x), static_cast<Y&&>(y)); }
|
||||
} // end namespace operators
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_OPERATORS_COMPARABLE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines operators for Iterables.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -14,7 +14,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/fwd/at.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <typename Derived>
|
||||
struct iterable_operators {
|
||||
template <typename N>
|
||||
@@ -35,6 +35,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
static_cast<N&&>(n));
|
||||
}
|
||||
};
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_OPERATORS_ITERABLE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines logical operators.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <typename Tag>
|
||||
struct logical_operators {
|
||||
static constexpr bool value = false;
|
||||
@@ -46,6 +46,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
constexpr auto operator!(X&& x)
|
||||
{ return hana::not_(static_cast<X&&>(x)); }
|
||||
} // end namespace operators
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_OPERATORS_LOGICAL_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines operators for Monads.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -17,7 +17,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <typename Tag>
|
||||
struct monad_operators {
|
||||
static constexpr bool value = false;
|
||||
@@ -30,6 +30,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
constexpr auto operator|(Xs&& xs, F&& f)
|
||||
{ return hana::chain(static_cast<Xs&&>(xs), static_cast<F&&>(f)); }
|
||||
} // end namespace operators
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_OPERATORS_MONAD_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines operators for Orderables.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -20,7 +20,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <typename Tag>
|
||||
struct orderable_operators {
|
||||
static constexpr bool value = false;
|
||||
@@ -55,6 +55,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
constexpr auto operator>=(X&& x, Y&& y)
|
||||
{ return hana::greater_equal(static_cast<X&&>(x), static_cast<Y&&>(y)); }
|
||||
} // end namespace operators
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_OPERATORS_ORDERABLE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines operators for Searchables.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -14,7 +14,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/fwd/at_key.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <typename Derived>
|
||||
struct searchable_operators {
|
||||
template <typename Key>
|
||||
@@ -35,6 +35,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
static_cast<Key&&>(key));
|
||||
}
|
||||
};
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_OPERATORS_SEARCHABLE_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines generally useful preprocessor macros.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -22,7 +22,12 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
|
||||
//! @ingroup group-details
|
||||
//! Expands to its first argument.
|
||||
#ifdef BOOST_HANA_WORKAROUND_MSVC_PREPROCESSOR_616033
|
||||
#define BOOST_HANA_PP_FRONT(...) BOOST_HANA_PP_FRONT_IMPL_I(__VA_ARGS__)
|
||||
#define BOOST_HANA_PP_FRONT_IMPL_I(...) BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_FRONT_IMPL(__VA_ARGS__, ),)
|
||||
#else
|
||||
#define BOOST_HANA_PP_FRONT(...) BOOST_HANA_PP_FRONT_IMPL(__VA_ARGS__, )
|
||||
#endif
|
||||
#define BOOST_HANA_PP_FRONT_IMPL(e0, ...) e0
|
||||
|
||||
//! @ingroup group-details
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines a SFINAE-friendly version of `std::common_type`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -16,7 +16,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
//! @ingroup group-details
|
||||
//! Equivalent to `std::common_type`, except it is SFINAE-friendly and
|
||||
//! does not support custom specializations.
|
||||
@@ -31,6 +31,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
decltype(true ? std::declval<T>() : std::declval<U>())
|
||||
>::type;
|
||||
};
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_STD_COMMON_TYPE_HPP
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::type_at`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -23,7 +23,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
# endif
|
||||
#endif
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
namespace td {
|
||||
template <std::size_t I, typename T>
|
||||
struct elt { using type = T; };
|
||||
@@ -52,6 +52,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
using type = typename decltype(td::get_elt<n>(Indexer{}))::type;
|
||||
#endif
|
||||
};
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_TYPE_AT_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::type_foldl1`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -13,7 +13,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/config.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <unsigned n>
|
||||
struct type_foldl1_t;
|
||||
|
||||
@@ -140,6 +140,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
using type = typename type_foldl1_t<(sizeof...(xn) > 6 ? 6 : sizeof...(xn))>
|
||||
::template result<f, x1, xn...>;
|
||||
};
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_TYPE_FOLDL1_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::type_foldr1`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -13,7 +13,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <boost/hana/config.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <unsigned n>
|
||||
struct type_foldr1_t;
|
||||
|
||||
@@ -144,6 +144,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
using type = typename type_foldr1_t<(sizeof...(xn) > 6 ? 6 : sizeof...(xn))>
|
||||
::template result<f, x1, xn...>;
|
||||
};
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_TYPE_FOLDR1_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::unpack_flatten`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -21,7 +21,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
namespace boost { namespace hana { namespace detail {
|
||||
template <std::size_t ...Lengths>
|
||||
struct flatten_indices {
|
||||
// avoid empty arrays by appending 0 to `lengths`
|
||||
@@ -65,6 +65,6 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail {
|
||||
return Indices::apply(static_cast<Xs&&>(xs), static_cast<F&&>(f),
|
||||
std::make_index_sequence<Indices::flat_length>{});
|
||||
}
|
||||
} BOOST_HANA_NAMESPACE_END
|
||||
} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_UNPACK_FLATTEN_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::variadic::at`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -16,7 +16,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail { namespace variadic {
|
||||
namespace boost { namespace hana { namespace detail { namespace variadic {
|
||||
template <std::size_t n, typename = std::make_index_sequence<n>>
|
||||
struct at_type;
|
||||
|
||||
@@ -34,7 +34,7 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail { namespace variadic {
|
||||
};
|
||||
|
||||
template <std::size_t n>
|
||||
constexpr at_type<n> at{};
|
||||
}} BOOST_HANA_NAMESPACE_END
|
||||
BOOST_HANA_INLINE_VARIABLE constexpr at_type<n> at{};
|
||||
}} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_VARIADIC_AT_HPP
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@file
|
||||
Defines `boost::hana::detail::variadic::drop_into`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Copyright Louis Dionne 2013-2022
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
@@ -16,7 +16,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <utility>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN namespace detail { namespace variadic {
|
||||
namespace boost { namespace hana { namespace detail { namespace variadic {
|
||||
template <std::size_t n, typename F, typename = std::make_index_sequence<n>>
|
||||
struct dropper;
|
||||
|
||||
@@ -41,7 +41,7 @@ BOOST_HANA_NAMESPACE_BEGIN namespace detail { namespace variadic {
|
||||
};
|
||||
|
||||
template <std::size_t n>
|
||||
constexpr make_dropper<n> drop_into{};
|
||||
}} BOOST_HANA_NAMESPACE_END
|
||||
BOOST_HANA_INLINE_VARIABLE constexpr make_dropper<n> drop_into{};
|
||||
}} }} // end namespace boost::hana
|
||||
|
||||
#endif // !BOOST_HANA_DETAIL_VARIADIC_DROP_INTO_HPP
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user