31template <
typename InterfaceType,
typename InstanceType>
33 template <
typename... Args>
36 InterfaceType&
ref()
override {
44template <
typename InterfaceType>
48 InterfaceType&
ref()
override {
58template <
typename InterfaceType>
59template <
typename InstanceType,
typename... Args>
62 "InstanceType must be a subtype of InterfaceType");
67template <
typename InterfaceType>
virtual InterfaceType & ref()=0
static std::unique_ptr< InstOrRefHolder< InterfaceType > > create(Args &&... args)
std::unique_ptr< T > make_unique(Args &&... args)
Constructs an object of type T and wraps it in a std::unique_ptr using args as the parameter list for...
InterfaceType & ref() override
virtual ~InstHolder_Impl()=default
InstHolder_Impl(Args &&... args)
RefHolder_Impl(InterfaceType &ref_)
InterfaceType & ref() override
virtual ~RefHolder_Impl()=default
std::reference_wrapper< InterfaceType > m_reference