Лучшее, что я могу себе представить, это использование std::forward_as_tuple
.
К сожалению, я не вижу способа использовать его с идеальной пересылкой: если вы хотите зарегистрировать значения в кортеже внутри класса,вы должны выбрать тип кортежа один раз для всех.
Лучшее, что я могу себе представить, это кортеж константных ссылок;что-то вроде следующего:
template <typename ... Ts>
class Foo
{
private:
std::tuple<Ts const & ...> m_args;
public:
Foo (Ts const & ... as) : m_args{std::forward_as_tuple(as...)}
{ }
};
Надеюсь, нет необходимости, помните, как висячие ссылки могут быть опасны для решения, основанного на кортеже ссылок.