4#ifndef _Stroika_Foundation_Containers_Concrete_SortedKeyedCollection_Factory_h_
5#define _Stroika_Foundation_Containers_Concrete_SortedKeyedCollection_Factory_h_
7#include "Stroika/Foundation/StroikaPreComp.h"
14 template <
typename T,
typename KEY_TYPE,
typename TRAITS>
15 class SortedKeyedCollection;
18namespace Stroika::Foundation::Containers::Factory {
20 using Common::ITotallyOrderingComparer;
29 template <
typename T,
typename KEY_TYPE,
typename TRAITS, ITotallyOrderingComparer<KEY_TYPE> KEY_COMPARER = less<KEY_TYPE>>
38 using KeyExtractorType =
typename ConstructedType::KeyExtractorType;
75 nonvirtual
ConstructedType operator() (
const KeyExtractorType& keyExtractor = {},
const KEY_COMPARER& keyComparer = {})
const;
98 static void Register (
const optional<SortedKeyedCollection_Factory>& f = nullopt);
115#include "SortedKeyedCollection_Factory.inl"
Singleton factory object - Used to create the default backend implementation of a Collection<> contai...
SortedKeyedCollection< T, KEY_TYPE, TRAITS > ConstructedType
static void Register(const optional< SortedKeyedCollection_Factory > &f=nullopt)
static const SortedKeyedCollection_Factory & Default()
constexpr SortedKeyedCollection_Factory()
nonvirtual ConstructedType operator()(const KeyExtractorType &keyExtractor={}, const KEY_COMPARER &keyComparer={}) const
function< ConstructedType(const KeyExtractorType &keyExtractor, const KEY_COMPARER &keyComparer)> FactoryFunctionType
A SortedKeyedCollection is a KeyedCollection<T> which remains sorted (iteration produces items sorted...