Допустим, у меня есть класс "Vector" (Math not Container), и я бы хотел перегрузить операторы, чтобы я мог выполнять цепочку вычислений.
Это прекрасно работает для меня:
friend Vector operator+(const Vector<N, Type>& a, const Vector<N, Type>& b)
friend Vector operator+( Vector<N, Type>& a, const Vector<N, Type>& b)
и с этим я могу делать что-то вроде
auto a = vec<3>(.0f, .0f, .0f);
auto b = a + a + a;
Однако я также реализовал список инициализатора
Vector& operator=(Type const (&arr)[N])
, который позволяет мне написать что-то вроде этого:
a = { .1f, .1f, .1f };
a += { .1f, .1f, .1f };
Однако я не могу выполнить цепочку этих списков инициализаторов.
a = { .1f, .1f, .1f } + b;
a = { .1f, .1f, .1f } + { .1f, .1f, .1f };
Я уже пытался добавить перегрузки операторов, такие как
friend Vector operator+(const Vector<N, Type>& a, Type const (&arr)[N])
friend Vector operator+( Vector<N, Type>& a, Type const (&arr)[N])
friend Vector operator+(Type const (&arr)[N], const Vector<N, Type>& a)
friend Vector operator+(Type const (&arr)[N], Vector<N, Type>& a)
, но это не такt работа ...
Возможно ли это?