Boost logo

Boost :

Subject: [boost] [chrono/date] validated versus valid dates
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2013-05-05 16:01:43


Allowing to build dates that are not validated doesn't mean that they
are not valid. A validated date is always valid. E.g

   date d(year(2013), may, day(5));

d is not a validated date but is valid.

Having a is_validated() function in addition to is_valid() could have
its uses

   assert( ! d.is_validated() && d.is_valid() );

is_validated() function forces to use a bit to store this information on
the date representation, but it improves the performances of the
is_valid() function.

Moving from a possible unvalidated to a validated one would need

   date d1;
   date d2(d1.year(), d1.month(),, check);

Instead of this a validate factory makes this clearer

   date d1;
   date d2 = validate(d1);

date validate(date const& dt)
   if (dt.is_validated()) return *this;
   else if (dt.is_valid())
     date res(dt);
     res.set_validated_(); // this is private
     return res;
   throw bad_date();


Boost list run by bdawes at, gregod at, cpdaniel at, john at