Move operator*(vm_distance,vm_distance) into class scope

clang -Wunused-function warns about a 'static constexpr' function
defined in a header if the header is ever included in a file which does
not call the function.  Move the function into class scope to silence
the warning and prevent the compiler from considering it when resolving
operator*(T1,T2).

Reported-by: btb <https://github.com/dxx-rebirth/dxx-rebirth/pull/54#issuecomment-86252750>
This commit is contained in:
Kp 2015-03-26 02:42:26 +00:00
parent 99e4fedcd3
commit 7045b44386

View file

@ -38,6 +38,8 @@ struct vms_vector
fix x, y, z;
};
class vm_distance_squared;
class vm_distance
{
public:
@ -107,6 +109,7 @@ public:
{
return vm_distance{0};
}
constexpr vm_distance_squared operator*(const vm_distance &) const;
};
class vm_magnitude : public vm_distance
@ -174,9 +177,9 @@ public:
}
};
static constexpr vm_distance_squared operator*(const vm_distance &a, const vm_distance &b)
constexpr vm_distance_squared vm_distance::operator*(const vm_distance &rhs) const
{
return vm_distance_squared{static_cast<fix64>(static_cast<fix>(a)) * static_cast<fix64>(static_cast<fix>(b))};
return vm_distance_squared{static_cast<fix64>(static_cast<fix>(*this)) * static_cast<fix64>(static_cast<fix>(rhs))};
}
#define DEFINE_SERIAL_VMS_VECTOR_TO_MESSAGE() \