std::tuple<A,A> generate() { return {}; }
Если вам нужна конструкция не по умолчанию A
:
template<class U, class F>
struct maker_t{ operator U(){ return f(); } F f; };
template<class U, class F>
maker_t<U,std::decay_t<F>> maker(F&& f){ return {std::forward<F>(f)}; }
Теперь вы можете:
std::tuple<A,A> generate() {
return {
maker<A>( []{ return A{}; } ),
maker<A>( []{ return A{}; } )
};
}
, где эти лямбды могут делать все, что возвращает A
.