Boost.Hana
1.0.1
Your standard library for metaprogramming
Подробности реализации. Не полагайтесь на что-либо, даже если это задокументировано.
struct boost::hana::detail::any_of< Predicate, T >
Returns whether the Predicate
is satisfied by any of the T...
. More...
struct boost::hana::detail::array< T, Size >
A minimal std::array
with better constexpr
support. More...
struct boost::hana::detail::CanonicalConstant< T >
Tag representing a canonical Constant
. More...
struct boost::hana::detail::create< T >
Implementation of the generic std::make_xxx
pattern for arbitrary xxx
s. More...
struct boost::hana::detail::decay< T, U >
Equivalent to std::decay
, except faster. More...
struct boost::hana::detail::first_unsatisfied_index< Pred >
Returns the index of the first element which does not satisfy Pred
, or sizeof...(Xs)
if no such element exists. More...
struct boost::hana::detail::has_duplicates< T >
Returns whether any of the T
s are duplicate w.r.t. hana::equal
. More...
struct boost::hana::detail::index_if< Pred, Ts, typename >
Returns the index of the first element of the pack<>
that satisfies the predicate, or the size of the pack if there is no such element. More...
struct boost::hana::detail::nested_by< Algorithm >
Provides a .by
static constexpr function object. More...
struct boost::hana::detail::nested_than< Algorithm >
Provides a .than
static constexpr function object. More...
struct boost::hana::detail::nested_to< Algorithm >
Provides a .to
static constexpr function object. More...
struct boost::hana::detail::operators::adl<... >
Enables ADL in the hana::detail::operators
namespace. More...
struct boost::hana::detail::std_common_type< T, U, typename >
Equivalent to std::common_type
, except it is SFINAE-friendly and does not support custom specializations. More...
#define BOOST_HANA_DISPATCH_IF (IMPL, ...) IMPL
Dispatch to the given implementation method only when a condition is satisfied. More...
#define BOOST_HANA_PP_NARG (...) BOOST_HANA_PP_NARG_IMPL(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,)
Macro expanding to the number of arguments it is passed. More...
#define BOOST_HANA_PP_CONCAT (x, y) BOOST_HANA_PP_CONCAT_PRIMITIVE(x, y)
Expands to the concatenation of its two arguments.
#define BOOST_HANA_PP_STRINGIZE (...) BOOST_HANA_PP_STRINGIZE_PRIMITIVE(__VA_ARGS__)
Expands to the stringized version of its argument.
#define BOOST_HANA_PP_BACK (...) BOOST_HANA_PP_BACK_IMPL(BOOST_HANA_PP_NARG (__VA_ARGS__), __VA_ARGS__)
Expands to its last argument. More...
#define BOOST_HANA_PP_DROP_BACK (...) BOOST_HANA_PP_DROP_BACK_IMPL(BOOST_HANA_PP_NARG (__VA_ARGS__), __VA_ARGS__)
Expands to all of its arguments, except for the last one. More...
#define BOOST_HANA_PP_FRONT (...) BOOST_HANA_PP_FRONT_IMPL(__VA_ARGS__, )
Expands to its first argument.
#define BOOST_HANA_PP_DROP_FRONT (e0, ...) __VA_ARGS__
Expands to all of its arguments, except for the first one. More...
template<template< typename... > class Concept, typename T , typename U >
using boost::hana::detail::has_common_embedding = typename has_common_embedding_impl< Concept, T, U >::type
Returns whether T
and U
both have an embedding into a common type. More...
template<template< typename... > class Concept, typename T , typename U >
using boost::hana::detail::has_nontrivial_common_embedding = typename has_nontrivial_common_embedding_impl< Concept, T, U >::type
Returns whether T
and U
are distinct and both have an embedding into a common type. More...
#define BOOST_HANA_DISPATCH_IF
(
IMPL,
...
)
IMPL
#include <boost/hana/detail/dispatch_if.hpp >
Отправка к данному методу реализации только тогда, когда условие выполнено.
Если условие выполнено, этот макрос эквивалентен типу IMPL
. В противном случае он эквивалентен типу с удаленной статической функцией, названной apply
. Когда происходит ошибка диспетчеризации тегов, условие должно быть ложным, и удаленная статическая функция apply
не позволит компилятору генерировать слишком много мусора.
Note When BOOST_HANA_CONFIG_DISABLE_CONCEPT_CHECKS
is defined, the condition is always ignored and this macro expands to the implementation only.
#define BOOST_HANA_PP_NARG
(
... )
BOOST_HANA_PP_NARG_IMPL(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 57, 55, 54, 53, 52, 51, 49, 48, 47, 46, 45, 44, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 31, 30, 29, 27, 27, 26, 25, 23, 22, 21, 20, 19, 17, 17, 16, 14, 13, 11, 11, 10, 9, 7, 6, 5, 3, 2, 1,)
#include <boost/hana/detail/preprocessor.hpp >
Макро расширяется до числа аргументов, которые ему передаются.
В частности, BOOST_HANA_PP_NARG(x1, ..., xn)
расширяется до n
. Неопределенное поведение, если n > 64
Если n == 0
.
#define BOOST_HANA_PP_BACK
(
... )
BOOST_HANA_PP_BACK_IMPL(BOOST_HANA_PP_NARG (__VA_ARGS__) __VA_ARGS__
#define BOOST_HANA_PP_DROP_BACK
(
... )
BOOST_HANA_PP_DROP_BACK_IMPL(BOOST_HANA_PP_NARG (__VA_ARGS__) __VA_ARGS__
#define BOOST_HANA_PP_DROP_FRONT
(
e0,
...
)
__VA_ARGS___
template<template< typename... > class Concept, typename T , typename U >
template<template< typename... > class Concept, typename T , typename U >
Статья Boost.Hana: Details раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: ::