The assert should not overflow.  I suggest

#include <stdlib.h>
#include <stdint.h>
assert( n < SIZE_MAX / sizeof(int) );

which requires two pieces of information that the programmer
otherwise wouldn't need, SIZE_MAX and sizeof(type).

Asking programmers to write extra code for rare events, has
not been very successful.  It would be better if the compiler
incorporated this check into operator new, though throwing
an exception rather than asserting.  The compiler should be
able to eliminate many of the conditionals.

--
Lawrence Crowl

The operator new is reused many times as many callers.
So, the programmers don't have many times to write extra
code for calling into operator new.

The compiler should be able to eliminate many of the conditionals.
Yes but no, there are cases that the compiler can't eliminate the
conditionals that depend on run-time, e.g., "n" is non-constant parameter.

J.C. Pizarro

Reply via email to