Loading [MathJax]/extensions/tex2jax.js
Boost.Hana  1.7.1
Your standard library for metaprogramming
All Classes Namespaces Files Functions Variables Typedefs Friends Macros Modules Pages
Details

Description

Implementation details. Do not rely on anything here, even if it is documented.

Classes

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 xxxs. 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 Ts are duplicate w.r.t. hana::equal. 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...
 
struct  boost::hana::detail::type_at< n, T >
 Classic MPL-style metafunction returning the nth element of a type parameter pack. More...
 

Macros

#define BOOST_HANA_DISPATCH_IF(IMPL, ...)   IMPL
 Dispatch to the given implementation method only when a condition is satisfied. 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_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...
 
#define BOOST_HANA_PP_NARG(...)    BOOST_HANA_PP_NARG_IMPL(__VA_ARGS__, 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_BACK(...)    BOOST_HANA_PP_BACK_IMPL(BOOST_HANA_PP_NARG(__VA_ARGS__), __VA_ARGS__)
 Expands to its last argument.
 
#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.
 

Typedefs

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

Macro Definition Documentation

◆ BOOST_HANA_DISPATCH_IF

#define BOOST_HANA_DISPATCH_IF (   IMPL,
  ... 
)    IMPL

#include <boost/hana/detail/dispatch_if.hpp>

Dispatch to the given implementation method only when a condition is satisfied.

If the condition is satisfied, this macro is equivalent to the type IMPL. Otherwise, it is equivalent to a type with a deleted static function named apply. When a tag-dispatching error happens, the condition should be false and the deleted static function apply will prevent the compiler from generating too much garbage.

Note
When BOOST_HANA_CONFIG_DISABLE_CONCEPT_CHECKS is defined, the condition is always ignored and this macro expands to the implementation only.
Remarks
This must be implemented as a macro, because we don't want the condition to be evaluated at all when BOOST_HANA_CONFIG_DISABLE_CONCEPT_CHECKS is defined.

◆ BOOST_HANA_PP_DROP_FRONT

#define BOOST_HANA_PP_DROP_FRONT (   e0,
  ... 
)    __VA_ARGS__

#include <boost/hana/detail/preprocessor.hpp>

Expands to all of its arguments, except for the first one.

This macro may not be called with less than 2 arguments.

◆ BOOST_HANA_PP_NARG

#define BOOST_HANA_PP_NARG (   ...)     BOOST_HANA_PP_NARG_IMPL(__VA_ARGS__, 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,)

#include <boost/hana/detail/struct_macros.hpp>

Macro expanding to the number of arguments it is passed.

Specifically, BOOST_HANA_PP_NARG(x1, ..., xn) expands to n. It is an error to call this macro with 0 arguments.

Typedef Documentation

◆ has_common_embedding

template<template< typename... > class Concept, typename T , typename U >
using boost::hana::detail::has_common_embedding = typedef typename has_common_embedding_impl<Concept, T, U>::type

#include <boost/hana/detail/has_common_embedding.hpp>

Returns whether T and U both have an embedding into a common type.

If T and U do not have a common-type, this metafunction returns false.

◆ has_nontrivial_common_embedding

template<template< typename... > class Concept, typename T , typename U >
using boost::hana::detail::has_nontrivial_common_embedding = typedef typename has_nontrivial_common_embedding_impl<Concept, T, U>::type

#include <boost/hana/detail/has_common_embedding.hpp>

Returns whether T and U are distinct and both have an embedding into a common type.

If T and U do not have a common-type, this metafunction returns false.