cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
toolbox::functional::detail Namespace Reference

Classes

struct  has_size
 检查类型是否有size()成员函数的类型特征 / Type trait to check if type has size() member function More...
 
struct  has_size< T, std::void_t< decltype(std::declval< T >().size())> >
 
struct  is_optional
 检查T是否为std::optional的类型特征 / Type trait to check if T is a std::optional More...
 
struct  is_optional< std::optional< T > >
 
struct  MemoizeState
 记忆化的内部状态 / Internal state for memoization More...
 
struct  overloaded
 用于创建重载集的辅助类 / Helper class for creating overload sets More...
 

Functions

template<class... Fs>
 overloaded (Fs...) -> overloaded< Fs... >
 
template<typename... Containers>
auto get_min_size (const Containers &... containers) -> size_t
 获取多个容器中的最小大小的辅助函数 / Helper function to get minimum size from multiple containers
 
template<typename Tuple , std::size_t... Is>
void increment_iterators (Tuple &iter_tuple, std::index_sequence< Is... >)
 增加元组中所有迭代器的辅助函数 / Helper function to increment all iterators in a tuple
 
template<typename Tuple , std::size_t... Is>
auto dereference_iterators_as_tuple (Tuple &iter_tuple, std::index_sequence< Is... >)
 解引用迭代器并创建引用元组的辅助函数 / Helper function to dereference iterators and create tuple of references
 

Variables

template<typename T >
constexpr bool is_optional_v = is_optional<std::decay_t<T>>::value
 

Function Documentation

◆ dereference_iterators_as_tuple()

template<typename Tuple , std::size_t... Is>
auto toolbox::functional::detail::dereference_iterators_as_tuple ( Tuple &  iter_tuple,
std::index_sequence< Is... >   
)

解引用迭代器并创建引用元组的辅助函数 / Helper function to dereference iterators and create tuple of references

auto iters = std::make_tuple(v.begin(), l.begin());
std::index_sequence_for<decltype(v),decltype(l)>{});
auto dereference_iterators_as_tuple(Tuple &iter_tuple, std::index_sequence< Is... >)
解引用迭代器并创建引用元组的辅助函数 / Helper function to dereference iterators and create tuple of references
Definition functional.hpp:187

◆ get_min_size()

template<typename... Containers>
auto toolbox::functional::detail::get_min_size ( const Containers &...  containers) -> size_t

获取多个容器中的最小大小的辅助函数 / Helper function to get minimum size from multiple containers

Template Parameters
Containers容器类型 / Container types
Returns
所有容器中的最小大小,如果没有容器则返回0 / Minimum size among all containers, or 0 if no containers
std::vector<int> v1{1,2,3};
std::list<int> l1{1,2};
auto min_size = get_min_size(v1, l1); // 返回2 / Returns 2
auto get_min_size(const Containers &... containers) -> size_t
获取多个容器中的最小大小的辅助函数 / Helper function to get minimum size from multiple containers
Definition functional.hpp:151

◆ increment_iterators()

template<typename Tuple , std::size_t... Is>
void toolbox::functional::detail::increment_iterators ( Tuple &  iter_tuple,
std::index_sequence< Is... >   
)

增加元组中所有迭代器的辅助函数 / Helper function to increment all iterators in a tuple

auto iters = std::make_tuple(v.begin(), l.begin());
std::index_sequence_for<decltype(v),decltype(l)>{});
void increment_iterators(Tuple &iter_tuple, std::index_sequence< Is... >)
增加元组中所有迭代器的辅助函数 / Helper function to increment all iterators in a tuple
Definition functional.hpp:171

◆ overloaded()

template<class... Fs>
toolbox::functional::detail::overloaded ( Fs...  ) -> overloaded< Fs... >

Variable Documentation

◆ is_optional_v

template<typename T >
constexpr bool toolbox::functional::detail::is_optional_v = is_optional<std::decay_t<T>>::value
inlineconstexpr