16template<CreationalConfig Decoratee,
typename Interface>
17 requires std::derived_from<central_type_t<Decoratee>, Interface>
20 AsInterface<Decoratee, Interface>
25 : decoratee_ { std::move(decoratee) }
47 return decoratee_.do_resolve(
53 .transform([](
auto ref) {
67 return decoratee_.do_resolve(
73 .transform([](
auto ref) {
80 template<std::
size_t DependencyIndex>
83 return this->decoratee_
95 template<CreationalConfig Decoratee,
typename InterfaceType>
97 Decoratee&& decoratee,
102 std::forward<Decoratee>(decoratee)
Concept and utilities for creational (factory/constructor) configurations.
Compile-time type pack utilities and metaprogramming foundations.
Definition Interface.hpp:22
meta::wrapped_with< std::optional > auto get_dependencies_input() const
Definition Interface.hpp:81
dependencies_pack_t< Decoratee > DependenciesPack
Definition Interface.hpp:34
static constexpr ConfigType CONFIG_TYPE
Definition Interface.hpp:37
meta::Pack< meta::Pack< Interface >, meta::Pack< const Interface > > ResolutionKeysPack
Definition Interface.hpp:30
auto do_resolve(meta::Pack< Interface > keys, auto &dependencies, meta::wrapped_with< ResolutionContext > auto &context, const auto &input) const
Definition Interface.hpp:40
Interface CentralType
Definition Interface.hpp:29
constexpr AsInterface(meta::Unit< Interface >, Decoratee &&decoratee)
Definition Interface.hpp:24
auto do_resolve(meta::Pack< const Interface > keys, auto &dependencies, meta::wrapped_with< ResolutionContext > auto &context, const auto &input) const
Definition Interface.hpp:60
Definition DependencyTags.hpp:18
Definition Decorator.hpp:19
typename Config::DependenciesPack dependencies_pack_t
Definition CreationalConfig.hpp:82
ConfigType
Categorization of configuration strategies in the DI container.
Definition ConfigType.hpp:24
@ CREATIONAL
Creational configs handle object instantiation and factory patterns. These are responsible for creati...
Definition ConfigType.hpp:27
typename Config::CentralType central_type_t
Helper alias to extract the central type from a CreationalConfig.
Definition CreationalConfig.hpp:75
Definition DecoratableConfig.hpp:9
Definition Interface.hpp:94
static constexpr implementation_details_::AsInterface< Decoratee, InterfaceType > decorate(Decoratee &&decoratee, meta::Unit< InterfaceType > interface_deducer)
Definition Interface.hpp:96