4#ifndef _Stroika_Foundation_Containers_Concrete_Set_Factory_h_
5#define _Stroika_Foundation_Containers_Concrete_Set_Factory_h_
7#include "Stroika/Foundation/StroikaPreComp.h"
18namespace Stroika::Foundation::Containers::Factory {
27 template <
typename T, IEqualsComparer<T> EQUALS_COMPARER = equal_to<T>>
30 static_assert (not is_reference_v<T> and not is_reference_v<EQUALS_COMPARER>,
31 "typically if this fails its because a (possibly indirect) caller forgot to use forward<>(), or remove_cvref_t");
97 static void Register (
const optional<Set_Factory>& f = nullopt);
114#include "Set_Factory.inl"
Singleton factory object - Used to create the default backend implementation of a Set<> container; ty...
function< ConstructedType(const EQUALS_COMPARER &equalsComparer)> FactoryFunctionType
static const Set_Factory & Default()
nonvirtual ConstructedType operator()(const EQUALS_COMPARER &equalsComparer={}) const
static void Register(const optional< Set_Factory > &f=nullopt)
Set<T> is a container of T, where once an item is added, additionally adds () do nothing.