Boost.Hana  1.7.0 Your standard library for metaprogramming
boost::hana Namespace Reference

Namespace containing everything in the library. More...

## Namespaces

literals
Namespace containing C++14 user-defined literals provided by Hana.

## Classes

struct  basic_tuple
Stripped down version of hana::tuple. More...

struct  basic_tuple_tag
Tag representing hana::basic_tuple. More...

struct  basic_type
Base class of hana::type; used for pattern-matching. More...

struct  common
Metafunction returning the common data type between two data types. More...

struct  default_
Mark a tag-dispatched method implementation as a default implementation. More...

struct  embedding
Marks a conversion between data types as being an embedding. More...

struct  has_common
Metafunction returning whether two data types share a common data type. More...

struct  integral_constant
Compile-time value of an integral type. More...

struct  integral_constant_tag
Tag representing hana::integral_constant. More...

struct  IntegralConstant
The IntegralConstant concept represents compile-time integral values. More...

struct  is_convertible
Returns whether there is a Hana-conversion from a data type to another. More...

struct  is_default
Returns whether a tag-dispatched method implementation is a default implementation. More...

struct  is_embedded
Returns whether a data type can be embedded into another data type. More...

struct  lazy
hana::lazy implements superficial laziness via a monadic interface. More...

struct  lazy_tag
Tag representing hana::lazy. More...

struct  map
Basic associative container requiring unique, Comparable and Hashable keys. More...

struct  map_tag
Tag representing hana::maps. More...

struct  optional
Optional value whose optional-ness is known at compile-time. More...

struct  optional_tag
Tag representing a hana::optional. More...

struct  pair
Generic container for two elements. More...

struct  pair_tag
Tag representing hana::pair. More...

struct  range
Compile-time half-open interval of hana::integral_constants. More...

struct  range_tag
Tag representing a hana::range. More...

struct  set
Basic unordered container requiring unique, Comparable and Hashable keys. More...

struct  set_tag
Tag representing the hana::set container. More...

struct  string
Compile-time string. More...

struct  string_tag
Tag representing a compile-time string. More...

struct  tag_of
Metafunction returning the tag associated to T. More...

struct  tuple
General purpose index-based heterogeneous sequence with a fixed length. More...

struct  tuple_tag
Tag representing hana::tuples. More...

struct  type
C++ type in value-level representation. More...

struct  type_tag
Tag representing hana::type. More...

struct  when
Enable a partial specialization only if a boolean condition is true. More...

## Typedefs

template<typename T , typename U >
using common_t = typename common< T, U >::type
Alias to common<T, U>::type, provided for convenience. More...

template<typename T >
using tag_of_t = typename hana::tag_of< T >::type
Alias to tag_of<T>::type, provided for convenience. More...

template<typename ... >
using when_valid = when< true >
Variant of when allowing specializations to be enabled only if an expression is well-formed. More...

## Functions

Defines a model of Struct with the given accessors. More...

Defines a model of Struct with the given members. More...

times A (T_1) \times \cdots \times A(T_n) \to A(U) @f\$. const expr auto ap
Lifted application. More...

auto BOOST_HANA_DEFINE_STRUCT (...)
Defines members of a structure, while at the same time modeling Struct. More...

## Variables

constexpr auto always
Return a constant function returning x regardless of the argument(s) it is invoked with. More...

constexpr auto apply
Invokes a Callable with the given arguments. More...

template<std::size_t n>
constexpr auto arg
Return the nth passed argument. More...

constexpr auto capture
Create a function capturing the given variables. More...

constexpr auto compose
Return the composition of two functions or more. More...

template<std::size_t n>
constexpr auto curry
Curry a function up to the given number of arguments. More...

mathtt
Invoke a function with the results of invoking other functions on its arguments. More...

constexpr auto fix
Return a function computing the fixed point of a function. More...

constexpr auto flip
Invoke a function with its two first arguments reversed. More...

constexpr auto id
The identity function – returns its argument unchanged. More...

constexpr auto infix
Return an equivalent function that can also be applied in infix notation. More...

constexpr auto lockstep
Invoke a function with the result of invoking other functions on its arguments, in lockstep. More...

constexpr auto on
Invoke a function with the result of invoking another function on each argument. More...

Pick one of several functions to call based on overload resolution. More...

Call the first function that produces a valid call expression. More...

constexpr auto partial
Partially apply a function to some arguments. More...

constexpr unspecified _ {}
Create simple functions representing C++ operators inline. More...

constexpr auto reverse_partial
Partially apply a function to some arguments. More...

template<typename S >
constexpr auto accessors
Returns a Sequence of pairs representing the accessors of the data structure. More...

constexpr auto all
Returns whether all the keys of the structure are true-valued. More...

constexpr auto all_of
Returns whether all the keys of the structure satisfy the predicate. More...

constexpr auto and_
Return whether all the arguments are true-valued. More...

constexpr auto any
Returns whether any key of the structure is true-valued. More...

constexpr auto any_of
Returns whether any key of the structure satisfies the predicate. More...

constexpr auto append
Append an element to a monadic structure. More...

constexpr auto at
Returns the nth element of an iterable. More...

template<std::size_t n>
constexpr auto at_c
Equivalent to at; provided for convenience. More...

constexpr auto at_key
Returns the value associated to the given key in a structure, or fail. More...

constexpr auto back
Returns the last element of a non-empty and finite iterable. More...

constexpr auto comparing
Returns a function performing equal after applying a transformation to both arguments. More...

constexpr auto concat
Combine two monadic structures together. More...

constexpr auto contains
Returns whether the key occurs in the structure. More...

constexpr auto in = hana::infix(hana::flip(hana::contains))
Return whether the key occurs in the structure. More...

template<typename Tag , typename optional_T >
constexpr auto is_a = see-documentation
Returns whether the tag of an object matches a given tag. More...

template<typename Tag , typename ... T>
constexpr auto is_an = is_a<Tag, T...>
Equivalent to is_a; provided for consistency with the rules of the English language.

template<typename Tag >
constexpr auto make
Create an object of the given tag with the given arguments. More...

template<typename To >
constexpr auto to
Converts an object from one data type to another. More...

constexpr auto count
Return the number of elements in the structure that compare equal to a given value. More...

constexpr auto count_if
Return the number of elements in the structure for which the predicate is satisfied. More...

constexpr auto cycle
Combine a monadic structure with itself n times. More...

constexpr auto div
Generalized integer division. More...

constexpr auto drop_back
Drop the last n elements of a finite sequence, and return the rest. More...

constexpr auto drop_front
Drop the first n elements of an iterable, and return the rest. More...

constexpr auto drop_front_exactly
Drop the first n elements of an iterable, and return the rest. More...

constexpr auto drop_while
Drop elements from an iterable up to, but excluding, the first element for which the predicate is not satisfied. More...

template<typename M >
constexpr auto empty
Identity of the monadic combination concat. More...

constexpr auto equal
Returns a Logical representing whether x is equal to y. More...

constexpr auto eval_if
Conditionally execute one of two branches based on a condition. More...

constexpr auto filter
Filter a monadic structure using a custom predicate. More...

constexpr auto find
Finds the value associated to the given key in a structure. More...

constexpr auto find_if
Finds the value associated to the first key satisfying a predicate. More...

constexpr auto first
Returns the first element of a pair. More...

constexpr auto fold = fold_left
Equivalent to fold_left; provided for convenience. More...

constexpr auto for_each
Perform an action on each element of a foldable, discarding the result each time. More...

constexpr auto front
Returns the first element of a non-empty iterable. More...

constexpr auto fuse
Transform a function taking multiple arguments into a function that can be called with a compile-time Foldable. More...

constexpr auto greater
Returns a Logical representing whether x is greater than y. More...

constexpr auto greater_equal
Returns a Logical representing whether x is greater than or equal to y. More...

constexpr auto if_
Conditionally return one of two values based on a condition. More...

constexpr auto index_if
Finds the value associated to the first key satisfying a predicate. More...

constexpr insert_t insert {}
Insert a value at a given index in a sequence. More...

constexpr auto insert_range
Insert several values at a given index in a sequence. More...

constexpr auto intersperse
Insert a value between each pair of elements in a finite sequence. More...

constexpr auto is_disjoint
Returns whether two Searchables are disjoint. More...

constexpr auto is_empty
Returns whether the iterable is empty. More...

constexpr auto is_subset
Returns whether a structure contains a subset of the keys of another structure. More...

constexpr keys_t keys {}
Returns a Sequence containing the name of the members of the data structure. More...

constexpr auto length
Return the number of elements in a foldable structure. More...

constexpr auto less
Returns a Logical representing whether x is less than y. More...

constexpr auto less_equal
Returns a Logical representing whether x is less than or equal to y. More...

template<typename A >
constexpr auto lift
Lift a value into an Applicative structure. More...

constexpr auto max
Returns the greatest of its arguments according to the less ordering. More...

constexpr auto members
Returns a Sequence containing the members of a Struct. More...

constexpr auto min
Returns the smallest of its arguments according to the less ordering. More...

constexpr auto minus
Subtract two elements of a group. More...

constexpr auto mod
Generalized integer modulus. More...

constexpr auto mult
Associative operation of a Ring. More...

constexpr auto negate
Return the inverse of an element of a group. More...

constexpr auto none
Returns whether all of the keys of the structure are false-valued. More...

constexpr auto none_of
Returns whether none of the keys of the structure satisfy the predicate. More...

constexpr auto not_
Negates a Logical. More...

constexpr auto not_equal
Returns a Logical representing whether x is not equal to y. More...

template<typename R >
constexpr auto one
Identity of the Ring multiplication. More...

constexpr auto or_
Return whether any of the arguments is true-valued. More...

constexpr auto ordering
Returns a function performing less after applying a transformation to both arguments. More...

constexpr auto permutations
Return a sequence of all the permutations of the given sequence. More...

constexpr auto plus
Associative binary operation on a Monoid. More...

constexpr auto power
Elevate a ring element to its nth power. More...

constexpr auto prefix
Inserts a value before each element of a monadic structure. More...

constexpr auto prepend
Prepend an element to a monadic structure. More...

constexpr auto product = see documentation
Compute the product of the numbers of a structure. More...

mathrm
Remove all the elements of a monadic structure that are equal to some value. More...

constexpr auto remove_at
Remove the element at a given index from a sequence. More...

template<std::size_t n>
constexpr auto remove_at_c
Equivalent to remove_at; provided for convenience. More...

constexpr auto remove_range
Remove the elements inside a given range of indices from a sequence. More...

template<std::size_t from, std::size_t to>
constexpr auto remove_range_c
Equivalent to remove_range; provided for convenience. More...

constexpr auto repeat
Invokes a nullary function n times. More...

template<typename M >
constexpr auto replicate
Create a monadic structure by combining a lifted value with itself n times. More...

constexpr auto reverse
Reverse a sequence. More...

constexpr auto scan_left
Fold a Sequence to the left and return a list containing the successive reduction states. More...

constexpr auto scan_right
Fold a Sequence to the right and return a list containing the successive reduction states. More...

constexpr auto second
Returns the second element of a pair. More...

constexpr auto size = hana::length
Equivalent to length; provided for consistency with the standard library. More...

constexpr auto slice
Extract the elements of a Sequence at the given indices. More...

template<std::size_t from, std::size_t to>
constexpr auto slice_c
Shorthand to slice a contiguous range of elements. More...

constexpr auto suffix
Inserts a value after each element of a monadic structure. More...

constexpr auto sum = see documentation
Compute the sum of the numbers of a structure. More...

constexpr auto take_back
Returns the last n elements of a sequence, or the whole sequence if the sequence has less than n elements. More...

template<std::size_t n>
constexpr auto take_back_c
Equivalent to take_back; provided for convenience. More...

constexpr auto take_front
Returns the first n elements of a sequence, or the whole sequence if the sequence has less than n elements. More...

template<std::size_t n>
constexpr auto take_front_c
Equivalent to take_front; provided for convenience. More...

constexpr auto take_while
Take elements from a sequence while the predicate is satisfied. More...

template<typename M >
constexpr auto tap
Tap inside a monadic chain. More...

constexpr auto then
Sequentially compose two monadic actions, discarding any value produced by the first but not its effects. More...

template<template< typename ... > class F>
constexpr auto template_
Lift a template to a Metafunction. More...

template<template< typename ... > class F>
constexpr auto metafunction
Lift a MPL-style metafunction to a Metafunction. More...

template<typename F >
constexpr auto metafunction_class
Lift a MPL-style metafunction class to a Metafunction. More...

constexpr auto integral
Turn a Metafunction into a function taking types and returning a default-constructed object. More...

template<template< typename ... > class F>
constexpr auto trait = hana::integral(hana::metafunction<F>)
Alias to integral(metafunction<F>), provided for convenience. More...

constexpr auto unpack
Invoke a function with the elements of a Foldable as arguments. More...

template<typename T >
constexpr auto value
Return the compile-time value associated to a constant. More...

constexpr auto value_of
Equivalent to value, but can be passed to higher-order algorithms. More...

constexpr auto while_
Apply a function to an initial state while some predicate is satisfied. More...

template<typename M >
constexpr auto zero
Identity of plus. More...

constexpr auto zip
Zip one sequence or more. More...

constexpr auto zip_shortest
Zip one sequence or more. More...

constexpr auto zip_shortest_with
Zip one sequence or more with a given function. More...

constexpr auto zip_with
Zip one sequence or more with a given function. More...

## Detailed Description

Namespace containing everything in the library.

## ◆ repeat

 constexpr auto boost::hana::repeat
constexpr
Initial value:
= [](auto const& n, auto&& f) -> void {
f(); f(); ... f();
}

Invokes a nullary function n times.

Given an IntegralConstant n and a nullary function f, repeat(n, f) will call f n times. In particular, any decent compiler should expand repeat(n, f) to

f(); f(); ... f(); // n times total
Parameters
 n An IntegralConstant holding a non-negative value representing the number of times f should be repeatedly invoked. f A function to repeatedly invoke n times. f is allowed to have side effects.

## Example

#include <string>
namespace hana = boost::hana;
int main() {
std::string s;
for (char letter = 'a'; letter <= 'g'; ++letter)
hana::repeat(hana::int_c<3>, [&] { s += letter; });
BOOST_HANA_RUNTIME_CHECK(s == "aaabbbcccdddeeefffggg");
}
repeat.hpp
Defines boost::hana::repeat.
integral_constant.hpp
Defines boost::hana::integral_constant.
boost::hana
Namespace containing everything in the library.
Definition: accessors.hpp:20
assert.hpp
Defines macros to perform different kinds of assertions.
boost::hana::repeat
constexpr auto repeat
Invokes a nullary function n times.
Definition: repeat.hpp:42
BOOST_HANA_RUNTIME_CHECK
#define BOOST_HANA_RUNTIME_CHECK(...)
Equivalent to BOOST_HANA_RUNTIME_ASSERT, but not influenced by the BOOST_HANA_CONFIG_DISABLE_ASSERTIO...
Definition: assert.hpp:209