Вот моя текущая реализация:
struct Dual {
float v;
std::valarray<float> d;
Dual(float v, std::valarray<float> d): v(v), d(d) {}
Dual(float v, float d = 0.f): v(v), d({d}) {}
};
Dual d0{1.f}; // OK.
Dual d1{1.f, 1.f}; // OK.
// Dual d2{1.f, 1.f, 1.f}; // Error. I want this.
Dual d2{1.f, {1.f, 1.f}}; // OK. I don't want this.
Можно ли использовать только один конструктор?
Так что Dual d2{1.f, 1.f, 1.f};
тоже в порядке.
Может быть, вот так (не может компилироваться):
struct Dual {
float v;
std::valarray<float> d;
Dual(float v, float d...): v(v), d({d...}) {}
};
Dual d0{1.f};
Dual d1{1.f, 1.f};
Dual d2{1.f, 1.f, 1.f}; // I want this.
Должен ли я использовать вариационный шаблон c или std::initilizer_list<>
?
А как пользоваться?