Создание всевозможных операторов перегрузки C++

существует класс, в котором я хочу реализовать операторы перегрузок для базовых математических действий. Я столкнулся с такой проблемой: функции операторов работают по одному и тому же принципу, но у них разная сигнатура. Как можно избавиться от данной проблемы и не писать:

class Test
{
    double a;
    public:
    Test& operator +=(const int b);
    Test& operator +=(const float b);
    Test& operator +=(const double b);
};

Есть ли способ сказать, что для всех сигнатур вида:

const T

Будет работать одинаковая реализация?


Ответы (1 шт):

Автор решения: Mikhailo

Ответ - шаблоны.

class Test
{
    double a;
    public:
    template<typename T>
    Test& operator +=(const T b);

Если надо только для типов, которые можно суммировать с double, то можно воспользоваться концептом convertible_to.

Еще я не очень понимаю, зачем ставить const при передаче аргумента по значению. Вот если бы передавали const T& - тогда дело другое.

→ Ссылка