update boost

This commit is contained in:
2023-11-24 12:56:13 -06:00
parent cfc99971af
commit 19d727037a
9260 changed files with 849256 additions and 299957 deletions

View File

@@ -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

View File

@@ -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)
*/

View File

@@ -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)
*/

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)
*/

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)
*/

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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
//////////////////////////////////////////////////////////////////////////////

View File

@@ -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

View File

@@ -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)
*/

View File

@@ -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

View File

@@ -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

View File

@@ -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)
*/

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)
*/

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)
*/

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)
*/

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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