kblib 0.2.3
General utilities library for modern C++
build.h File Reference

Provides by-value algorithms which produce containers. More...

#include "tdecl.h"
#include "algorithm.h"
#include "fakestd.h"
#include "iterators.h"
#include "traits.h"
#include <algorithm>
#include <iterator>
#include <numeric>
#include <tuple>
Include dependency graph for build.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  kblib::detail::buildiota_impl< Container, true >
 
struct  kblib::detail::buildiota_impl< Array, false >
 

Namespaces

namespace  kblib
 The main namespace in which all entities from kblib are defined.
 
namespace  kblib::detail
 The namespace used for implementation details within kblib.
 

Functions

template<typename Container , typename InputIt , typename UnaryFunction >
auto kblib::build (InputIt first, InputIt last, UnaryFunction f, typename Container::allocator_type allocator=typename Container::allocator_type{}) -> Container
 Constructs a container by applying a UnaryFunction to every element of an input range. More...
 
template<typename Container , typename InputIt , typename InputIt2 , typename BinaryFunction >
auto kblib::build (InputIt first, InputIt last, InputIt2 first2, BinaryFunction f, typename Container::allocator_type allocator=typename Container::allocator_type{}) -> Container
 Constructs a container by applying a BinaryFunction to every pair of elements in the input ranges. More...
 
template<typename Array , typename InputIt , typename UnaryFunction , enable_if_t< not is_resizable_v< Array >, int > = 0>
auto kblib::build (InputIt first, InputIt last, UnaryFunction f) -> Array
 Constructs an array-like container by applying a UnaryFunction to every element of an input range. More...
 
template<typename Array , typename InputIt , typename InputIt2 , typename BinaryFunction , enable_if_t< not is_resizable_v< Array >, int > = 0>
auto kblib::build (InputIt first, InputIt last, InputIt2 first2, BinaryFunction f) -> Array
 Constructs an array-like container by applying a BinaryFunction to every pair of elements in the input ranges. More...
 
template<typename Container , typename Functor >
auto kblib::build (Functor f, size_t size, typename Container::allocator_type allocator=typename Container::allocator_type{}) -> Container
 Constructs a container with elements initialized by repeatedly calling a generating function. More...
 
template<typename Array , typename Functor , enable_if_t< not is_resizable_v< Array >, int > = 0>
auto kblib::build (Functor f, size_t size=std::tuple_size< Array >::value) -> Array
 Constructs an array-like container with elements initialized by repeatedly calling a generating function. More...
 
template<typename Container , typename InputIt , typename UnaryFunction >
auto kblib::build_dy (InputIt first, InputIt last, UnaryFunction f) -> Container
 Constructs a container by applying a UnaryFunction to every element of an input range. Exactly like build, but for resizable non-AllocatorAware Containers (which are hard to detect automatically). More...
 
template<typename Container , typename InputIt , typename InputIt2 , typename BinaryFunction >
auto kblib::build_dy (InputIt first, InputIt last, InputIt2 first2, BinaryFunction f) -> Container
 Constructs a container by applying a BinaryFunction to every pair of elements in the input ranges. Exactly like build, but for resizable non-AllocatorAware Containers (which are hard to detect automatically). More...
 
template<typename Container , typename Functor >
auto kblib::build_dy (Functor f, size_t size) -> Container
 Constructs a container with elements initialized by repeatedly calling a generating function. Exactly like build, but for resizable non-AllocatorAware Containers (which are hard to detect automatically). More...
 
template<typename Container , typename Range , typename UnaryFunction , enable_if_t< is_resizable_v< Container >, int > = 0>
auto kblib::build_dy (Range &&r, UnaryFunction f) -> Container
 
template<typename Container , typename... Args>
constexpr auto kblib::buildiota (Args &&... args) -> auto
 Builds a container of increasing values. More...
 
template<typename Container , typename InputIt >
auto kblib::build_copy (InputIt first, InputIt last, typename Container::allocator_type allocator=typename Container::allocator_type{}) -> Container
 
template<typename Container , typename Range , enable_if_t< is_resizable_v< Container >, int > = 0>
auto kblib::build_copy (Range &&r) -> Container
 
template<typename Container , typename Range >
auto kblib::build_copy (Range &&r, typename Container::allocator_type allocator=typename Container::allocator_type{}) -> Container
 
template<typename Container , typename InputIt , enable_if_t< not is_resizable_v< Container >, int > = 0>
constexpr auto kblib::build_copy (InputIt first, InputIt last) -> Container
 
template<typename Container , typename Range , enable_if_t< not is_resizable_v< Container >, int > = 0>
constexpr auto kblib::build_copy (Range &&r) -> Container
 
template<typename Container , typename InputIt , enable_if_t< not is_resizable_v< Container >, int > = 0>
auto kblib::build_copy (InputIt first, InputIt last, std::size_t size) -> Container
 
template<typename Container , typename Range , enable_if_t< not is_resizable_v< Container >, int > = 0>
auto kblib::build_copy (Range &&r, std::size_t size) -> Container
 
template<typename Container , typename InputIt , typename Predicate >
auto kblib::build_copy_if (InputIt first, InputIt last, Predicate f, typename Container::allocator_type allocator=typename Container::allocator_type{}) -> Container
 
template<typename Container , typename InputIt , typename Size >
auto kblib::build_copy_n (InputIt first, Size count, typename Container::allocator_type allocator=typename Container::allocator_type{}) -> Container
 
template<typename Container , typename InputIt , typename Size , typename Predicate >
auto kblib::build_copy_n_if (InputIt first, Size count, Predicate f, typename Container::allocator_type allocator=typename Container::allocator_type{}) -> Container
 

Detailed Description

Provides by-value algorithms which produce containers.

Author
killerbee
Date
2019-2021

Definition in file build.h.