Например, если у меня есть:
typedef enum { year, month, day } field_type;
inline foo operator *(field_type t,int x)
{
return foo(f,x);
}
inline foo operator -(field_type t)
{
return t*-1;
}
int operator /(distance const &d,field_type v)
{
return d.in(v);
}
Потому что, если я не определяю таких операторов, на самом деле законно писать day*3
, и это
будет переведено на 6?
Итак, это законно?
По крайней мере, компилятор gcc и intel принимает это без предупреждения.
Clearification:
Мне не нужны арифметические операции по умолчанию, я хочу, чтобы мои собственные операции возвращали нецелый тип.