On Wed, April 11, 2007 17:51, Oleg V. Zhylin wrote:
Hi,
Is there a reason to use type int in the code at line 487 in oserializer.hpp?
int count = sizeof(t) / ( static_cast
(static_cast (&t[1])) - static_cast
(static_cast (&t[0])) C++ standard draft states in section 5.3.3 [expr.sizeof]
The result is a constant of an implementation-defined type which is the same type as that which is named size_t in the standard header <cstddef>(18.1).
I assume otherwise you will get a warning, that a sign can be lost through the assignment. The problem here is that expression (type* - type*) results not in an unsigned type (size_t) but a signed difference type. If you divide unsigned value through a signed value you get a signed value. And then you would (according to your suggestion) assign it to an unsigned value => warning. With Kind Regards, Ovanes Markarian