|
Boost : |
From: Jason McCarty (bclg_at_[hidden])
Date: 2003-08-05 11:35:13
[gah, I originally sent this to the wrong address]
I found a slight annoyance with operator>> (istream&, interval<whatever>&):
It can't cope with whitespace before its sentinel characters '[' and
',', causing some input operations to fail unnecessarily.
I would recommend the following alternative implementation, modeled
after a function in Stroustrup's TCPL.
template<class T, class Policies> inline
std::istream& operator>>(std::istream& is, interval<T, Policies>& r)
{
T l, u;
char c = 0;
is >> c;
if (c == '[') {
is >> l >> c;
if (c == ',')
is >> u >> c;
if (c != ']')
is.setstate(is.failbit);
} else {
is.putback(c);
is >> l;
u = l;
}
if (is)
r.assign(l, u);
return is;
}
This implementation also allows reading a scalar of type T, and creating
a point interval with that value.
Thoughts?
Jason McCarty
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk