Вы можете создать свою собственную абстракцию для перегрузки оператора +=
, что-то вроде
template <typename T>
class myVar {
public:
myVar(T var) : val{var} {}
myVar& operator+=(const myVar& t) {
this->val = static_cast<T>(this->val + t.val);
return *this;
}
T val;
};
int main()
{
typedef unsigned short uint16_t;
myVar<uint16_t> c{3};
myVar<uint16_t> d{4};
c += d;
}
. Он по-прежнему использует static_cast
, но вам нужно использовать его только один раз, а затем повторно использовать.И вам это не нужно в ваших main
.
ИМХО, это просто добавляет накладные расходы, но мнения могут отличаться ...