From: Mark Rodgers []
> From: "Jeff Garland" <>
> > I'm not sure what you mean by I/O, but the 'calendar' is responsible
> > for defining the mapping between the label form (eg: 2002-1-1) and
> > a counted form. The counted form is used form is used for calculation
> > and comparisons.
> But it seems to me that I need to write "gregorian::date" instead of
> just "date" or perhaps "date<long>".
> I expect that I should be able to do write something like
> date d;
> cin >> set_calendar(gregorian) >> d;
> cout << set_calendar(french_revolutionary) << d;
> The date, d, contains a value representing a day that has many
> names according to different calendar systems.  The name only matters
> for input and output.

But what is a "date<long>" ? In order to convert to a calendar system or do any comparisons you have to know the beginning of the epoch and the increment. A "date" could be measured in seconds since Jan 1, 1970 or it could be measured in years since the beginning of time.

Is "gregorian::date" harder to write then date<long, epoch, increment> ?