c ++ 11: рассылка аргументов между базовыми классами при построении - PullRequest
0 голосов
/ 10 апреля 2020

Предположим, что у каждого есть класс, производный от двух базовых классов.

class Derived : public Base1, public Base2 {
};

Чтобы создать / создать объект типа Derived, моей первоначальной идеей было использование пакета параметров. Проблема в том, что я не знаю, как распределять аргументы между Base1 и Base2 соответственно.

template <typename... TArgs>
Derived(TArgs&&... args)
  : Base1(/* what goes here? */)
  , Base2(/* what goes here? */) {
}

Я заранее знаю, что Derived наследуется только от двух базы классы. Мой вопрос заключается в том, есть ли у кого-то конструкция-путь, производная с синтаксисом, подобным приведенному ниже?

Derived d({arguments for Base1}, {arguments for Base2});

template <typename T1, typename T2>
Derived : Base1(T1), Base2(T2) {}

И, если возможно, тогда каковы требования к классам Base?

Как Должны ли они принять аргументы конструкции?

...