|
template<class T > |
constexpr T && | ctl::fwd (rmref< T > &t) noexcept |
|
template<class T > |
constexpr T && | ctl::fwd (rmref< T > &&t) noexcept |
|
template<std::size_t idx, class... Ts> |
requires constexpr detail::arg::valid_indexable_pack< idx, Ts... > auto && | ctl::arg (Ts &&... args) noexcept |
|
template<std::input_iterator I, std::sentinel_for< I > S, class T , class Proj = std::identity> |
requires constexpr std::indirect_binary_predicate< std::ranges::equal_to, std::projected< I, Proj >, T const * > bool | ctl::found (I first, S last, T const &value, Proj proj={}) |
|
template<std::ranges::input_range R, class T , class Proj = std::identity> |
requires constexpr std::indirect_binary_predicate< std::ranges::equal_to, std::projected< std::ranges::iterator_t< R >, Proj >, T const * > bool | ctl::found (R &&r, T const &value, Proj proj={}) |
|
template<class T > |
constexpr rmref< T > && | ctl::mv (T &&t) noexcept |
|
template<std::input_iterator I, std::sentinel_for< I > S, class Proj = std::identity, std::indirect_unary_predicate< std::projected< I, Proj >> Pred> |
constexpr bool | ctl::found_if (I first, S last, Pred pred={}, Proj proj={}) |
|
template<std::ranges::input_range R, class Proj = std::identity, std::indirect_unary_predicate< std::projected< std::ranges::iterator_t< R >, Proj >> Pred> |
constexpr bool | ctl::found_if (R &&r, Pred pred={}, Proj proj={}) |
|
template<detail::streq::stringlike... Strings> |
| ctl::requires (sizeof...(Strings) > 1) inline const expr bool streq(Strings &&... strings) noexcept |
|
template<std::integral L, std::integral R> |
constexpr std::strong_ordering | ctl::icmp (L l, R r) noexcept |
|
|
template<template< class... > class Template, class... Args> |
concept | ctl::exists = detail::exists::impl<Template, Args...> |
|
template<detail::lowest::arithmetic Arithmetic> |
requires constexpr detail::lowest::has_numeric_limits_lowest< Arithmetic > Arithmetic | ctl::lowest = std::numeric_limits<Arithmetic>::lowest() |
|
template<detail::highest::arithmetic Arithmetic> |
requires constexpr detail::highest::has_numeric_limits_max< Arithmetic > Arithmetic | ctl::highest = std::numeric_limits<Arithmetic>::max() |
|
template<class T , template< class... > class Template> |
concept | ctl::typeof = detail::typeof ::impl<T, Template> |
|
template<class... Ts> |
concept | ctl::same = sizeof...(Ts) > 0 and detail::same::impl<0 |
|
template<class... Ts> |
concept | ctl::different = !same<Ts...> |
|
template<std::input_iterator I, std::sentinel_for< I > S, class Proj = std::identity, std::indirect_unary_predicate< std::projected< I, Proj >> Pred>
constexpr bool ctl::found_if |
( |
I |
first, |
|
|
S |
last, |
|
|
Pred |
pred = {} , |
|
|
Proj |
proj = {} |
|
) |
| |
|
inlineconstexpr |
checks if a predicate is true for any value in a range mirrors std::ranges::find_if