Loading...
Searching...
No Matches
bbm::concepts::backbone::control Concept Reference

A type T has valid control methods if: More...

#include <control.h>

Concept definition

template<typename T>
concept bbm::concepts::backbone::control = requires(T a)
{
{ cast<T>( std::declval<T>() ) } -> std::same_as<T>;
{ select( std::declval<mask_t<T>>(), a, a ) } -> std::convertible_to<T>;
{ lookup<T>( std::declval<std::vector<remove_packet_t<T>>>(), std::declval<size_t>(), std::declval<index_mask_t<size_t>>() ) } -> std::convertible_to<T>;
{ lookup<T>( std::declval<std::vector<T>>(), std::declval<size_t>(), std::declval<index_mask_t<size_t>>() ) } -> std::convertible_to<T>;
{ lookup<T>( std::declval<std::vector<remove_packet_t<T>>>(), std::declval<index_t<T>>(), std::declval<index_mask_t<T>>() ) } -> std::convertible_to<T>;
{ lookup<T>( std::declval<std::vector<T>>(), std::declval<index_t<T>>(), std::declval<index_mask_t<T>>() ) } -> std::convertible_to<T>;
{ lookup<T>( std::declval<std::vector<remove_packet_t<T>>>(), std::declval<size_t>() ) } -> std::convertible_to<T>;
{ lookup<T>( std::declval<std::vector<T>>(), std::declval<size_t>()) } -> std::convertible_to<T>;
{ lookup<T>( std::declval<std::vector<remove_packet_t<T>>>(), std::declval<index_t<T>>() ) } -> std::convertible_to<T>;
{ lookup<T>( std::declval<std::vector<T>>(), std::declval<index_t<T>>() ) } -> std::convertible_to<T>;
{ set( std::declval<std::vector<remove_packet_t<T>>>(), std::declval<size_t>(), std::declval<remove_packet_t<T>>(), std::declval<index_mask_t<size_t>>() ) };
{ set( std::declval<std::vector<T>>(), std::declval<size_t>(), std::declval<T>(), std::declval<index_mask_t<size_t>>() ) };
{ set( std::declval<std::vector<remove_packet_t<T>>>(), std::declval<index_t<T>>(), std::declval<T>(), std::declval<index_mask_t<T>>() ) };
{ set( std::declval<std::vector<T>>(), std::declval<index_t<T>>(), std::declval<T>(), std::declval<index_mask_t<T>>() ) };
{ set( std::declval<std::vector<remove_packet_t<T>>>(), std::declval<size_t>(), std::declval<remove_packet_t<T>>() ) };
{ set( std::declval<std::vector<T>>(), std::declval<size_t>(), std::declval<T>() ) };
{ set( std::declval<std::vector<remove_packet_t<T>>>(), std::declval<index_t<T>>(), std::declval<T>() ) };
{ set( std::declval<std::vector<T>>(), std::declval<index_t<T>>(), std::declval<T>() ) };
{ binary_search( std::declval<std::vector<T>>(), [](const T&) { return true; }, std::declval<index_mask_t<T>>() ) } -> std::convertible_to< index_t<T> >;
{ binary_search( std::declval<std::vector<T>>(), [](const T&) { return true; } ) } -> std::convertible_to< index_t<T> >;
}
A type T has valid control methods if:
Definition: control.h:33
Definition: util.h:25
constexpr index_t< bbm::iterable_value_t< C > > binary_search(C &&container, PRED &&predicate, const index_mask_t< bbm::iterable_value_t< C > > &mask=true)
binary search
Definition: control.h:92
constexpr auto select(MASK &&mask, const A &a, const A &b)
Definition: backbone.h:255
void set(C &&container, const Index &idx, Value &&value, const index_mask_t< Index > &mask=true)
Generalization of backbone::set to include tuples/named/reflection-supported objects.
Definition: backbone.h:352

Detailed Description

A type T has valid control methods if: