4#ifndef _Stroika_Foundation_Containers_Concrete_SortedMapping_Factory_h_
5#define _Stroika_Foundation_Containers_Concrete_SortedMapping_Factory_h_
7#include "Stroika/Foundation/StroikaPreComp.h"
14 template <
typename KEY_TYPE,
typename VALUE_TYPE>
18namespace Stroika::Foundation::Containers::Factory {
20 using Common::ITotallyOrderingComparer;
29 template <
typename KEY_TYPE,
typename VALUE_TYPE, ITotallyOrderingComparer<KEY_TYPE> KEY_COMPARER = less<KEY_TYPE>>
32 static_assert (not is_reference_v<KEY_TYPE> and not is_reference_v<VALUE_TYPE> and not is_reference_v<KEY_COMPARER>,
33 "typically if this fails its because a (possibly indirect) caller forgot to use forward<>(), or remove_cvref_t");
99 static void Register (
const optional<SortedMapping_Factory>& f = nullopt);
116#include "SortedMapping_Factory.inl"
Singleton factory object - Used to create the default backend implementation of a SortedMapping<> con...
static const SortedMapping_Factory & Default()
SortedMapping< KEY_TYPE, VALUE_TYPE > ConstructedType
static void Register(const optional< SortedMapping_Factory > &f=nullopt)
constexpr SortedMapping_Factory()
function< ConstructedType(const KEY_COMPARER &keyInOrderComparer)> FactoryFunctionType
nonvirtual ConstructedType operator()(const KEY_COMPARER &keyInOrderComparer={}) const