I want to read unsigned integers in base-10 (decimal) representation from a C++ iostream with at least rudimentary error detection. In my view, minus signs would clearly be
Would it be really different if you'd done this?
int i;
unsigned int u;
c >> i;
u = i;
std :: cout << u;
It doesn't matter so much that operator>>
tolerates the sign mismatch because the underlying C rules will allow a silent conversion in any case. You're not fundamentally adding any safety by "strengthening" the input operator.
That said, my gcc (4.3.5 on Solaris) says it's a conversion error.