
2011/3/16 Howard Hinnant <howard.hinnant@gmail.com>:
On Mar 16, 2011, at 10:47 AM, Joachim Faulhaber wrote:
D d2 = D(); // d2.count() zero-initialized - safety if you believe 0 is safe
BTW, I don't care for safety here at all. From my point of view I need some minimal information from an unknown type T to be able to express basic things like
0 < 1
where 0 and 1 are not available as literals or atomic expressions for T.
<nod> This is pretty much the rationale for duration_values<Rep>::zero(). There does not exist a duration_values<Rep>::one()
I don't need a one() value if I get ++ T zero = T(); T one = T(); ++one; zero < one therefore I'd like to have it ;)
mainly because the standardization of the <chrono> library was very difficult, with many interested parties, and one of the ways to get something like that done is to propose as little as possible. We didn't absolutely need one() to get timed sleeping and waiting going, and we had to keep the thread library as the main client of <chrono>, lest consensus would not have been achieved. Things like one() might be added via a future TR and/or standard.
I've found that template<class T>struct identity_element{...}; template<class T>struct unit_element{...}; are useful generalizations of zero and one. And I think that an interval container library is not an adequate location for them.
I'm already warming up my favorite additions for <chrono>. :-)
http://home.roadrunner.com/~hinnant/duration_io/chrono_io.html http://home.roadrunner.com/~hinnant/duration_io/chrono_util.html
Good luck for them :) Joachim -- Interval Container Library [Boost.Icl] http://www.joachim-faulhaber.de