On Tue, 19 Aug 2003 13:25:37 +1000, Chris Trengove wrote > I have some concerns about the implementation of the "period" > concept, as given in period.hpp. First of all, the documentation > (for, say, date_period) talks of the constructor > > date_period(date begin,date last) > > as creating a period as [begin,last). But really what is meant here > is that the "last" parameter is actually going to become the "end" > of the period. This is clear from the implementation in period.hpp, > which is > > template<class point_rep, class duration_rep> > inline > period<point_rep,duration_rep>::period(point_rep begin, point_rep > end)
Yes, the function defintion is misleading. In the function implementation (shown above) it is clear that this is the end. > I think there are two errors in the implementation of the period > class, perhaps caused by this confusion between "last" and "end". > > 1) is_null() is implemented as > > return last_ <= begin; > > which means that a period of length 1 is judged as being "null". The > correct implementation should be > > return end() <= begin; > or > return last < begin; Yep. Fixed in CVS. > 2) operator<() is implemented as > > return (last_ <= rhs.begin_); > > and this should be > > return (end() <= rhs.begin_); > or > return (last_ < rhs.begin_); Yep. Fixed in CVS. > Also, I think that the implementation would be simpler and more > efficient if _end was chosen as the data member, rather than _last. > > ... detail omitted... Probably true, I'll put this on the todo list to look at. Thanks for the detailed comments. Jeff _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost