AS
Size: a a a
AS
AS
AS
NP
factory
шаблонный функтор, которому при вызове можно будет скормить созданный объектNP
std::variant
, как тут уже и посоветовали, ещё можно std::any
A
factory
шаблонный функтор, которому при вызове можно будет скормить созданный объектАК
АК
АК
factory
АК
NP
template<typename... Ts>
class A {};
template<typename F>
void factory(F&& consumer)
{
if (runtime_condition_1())
return (void)std::forward<F>(consumer)(A<int, float>{});
else if (runtime_condition_2())
return (void)std::forward<F>(consumer)(A<std::string>{});
return (void)std::forward<F>(consumer)(A<void>{});
}
struct ConsumerExample
{
template<typename... Ts>
void operator()(A<Ts...>&& obj)
{
}
};
NP
VF
m
NP
factory
АК
template<typename... Ts>
class A {};
template<typename F>
void factory(F&& consumer)
{
if (runtime_condition_1())
return (void)std::forward<F>(consumer)(A<int, float>{});
else if (runtime_condition_2())
return (void)std::forward<F>(consumer)(A<std::string>{});
return (void)std::forward<F>(consumer)(A<void>{});
}
struct ConsumerExample
{
template<typename... Ts>
void operator()(A<Ts...>&& obj)
{
}
};
NP
AS