4#ifndef _Stroika_Foundation_Containers_Concrete_Association_Factory_h_
5#define _Stroika_Foundation_Containers_Concrete_Association_Factory_h_
7#include "Stroika/Foundation/StroikaPreComp.h"
16 template <
typename KEY_TYPE,
typename VALUE_TYPE>
20namespace Stroika::Foundation::Containers::Factory {
32 template <
typename KEY_TYPE,
typename VALUE_TYPE, IEqualsComparer<KEY_TYPE> KEY_EQUALS_COMPARER = equal_to<KEY_TYPE>>
35 static_assert (not is_reference_v<KEY_TYPE> and not is_reference_v<VALUE_TYPE> and not is_reference_v<KEY_EQUALS_COMPARER>,
36 "typically if this fails its because a (possibly indirect) caller forgot to use forward<TTT>(), or remove_cvref_t");
55 optional<bool> fOptimizeForLookupSpeedOverUpdateSpeed;
104 static void Register (
const optional<Association_Factory>& f = nullopt);
121#include "Association_Factory.inl"
An Association pairs key values with (possibly multiple or none) mapped_type values....
Singleton factory object - Used to create the default backend implementation of a Association<> conta...
static const Association_Factory & Default()
function< ConstructedType(const KEY_EQUALS_COMPARER &keyEqualsComparer)> FactoryFunctionType
nonvirtual ConstructedType operator()(const KEY_EQUALS_COMPARER &keyEqualsComparer={}) const
constexpr Association_Factory()
Association< KEY_TYPE, VALUE_TYPE > ConstructedType
static void Register(const optional< Association_Factory > &f=nullopt)