4#ifndef _Stroika_Foundation_Containers_Adapters_Adder_h_
5#define _Stroika_Foundation_Containers_Adapters_Adder_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
9#include "Stroika/Foundation/Common/Common.h"
15namespace Stroika::Foundation::Containers::Adapters {
38 template <
typename CONTAINER>
39 concept IAddableTo =
requires (CONTAINER p) { p.push_back (declval<typename CONTAINER::value_type> ()); } or
40 requires (CONTAINER p) { p.push_front (declval<typename CONTAINER::value_type> ()); } or
41 requires (CONTAINER p) { p.Add (declval<typename CONTAINER::value_type> ()); } or
42 requires (CONTAINER p) { p.insert (declval<typename CONTAINER::value_type> ()); };
49 template <
typename ELT2ADD,
typename CONTAINER>
56 template <IAddableTo CONTAINER_TYPE>
61 using value_type =
typename CONTAINER_TYPE::value_type;
conditional_t<(sizeof(CHECK_T)<=2 *sizeof(void *)) and is_trivially_copyable_v< CHECK_T >, CHECK_T, const CHECK_T & > ArgByValueType
This is an alias for 'T' - but how we want to pass it on stack as formal parameter.
utility for generic code that wishes to add something to a somewhat arbitrary container,...