Boost logo

Boost :

From: Robert Ramey (ramey_at_[hidden])
Date: 2005-09-04 16:06:43


David Abrahams wrote:

I've gone back and looked at this again.

> 5. Archive Concept Requirements are specified in a completely new,
> unprecedented way. I can see why you want to write them this way,
> but the result is that it isn't completely clear which elements of
> the interface are required and which are optional.

The goal is to describe those functions that a class must implement to
function in order to guarentee that it will compile and execute with any
serializable type.

If it fails to fullfill one or more requirements, it might work with some
serializable type - but there is no guarentee that it will compile with all
of them.

Note that his concept is different than others in the standard library in
that one of the requirements is that it be a class with certain required
member functions. Most or all other concept definitions only specify
operations for which the type is valid. As far as I know this doesn't
include supporting specific member functions.

The iterator library does require that an iterator be derived from a
specific class and permit that functions be overloaded - its sort of similar
to what we have here - but I couldn't see an exact match.

For example,
> there's a colon after the class name.

class iarchive : ..
{
};

is intended to illustrate that fact that an archive may be derived from
somethng else but that this would be optional and that it is not a relevant
feature of the archive concept. Perhaps the :... is confusing and should be
removed.

> Does the class need to be derived from something?

The concept requirements don't require or prohibit it. It would be
considered a feature of a specific model on the concept. It didn't occur to
me to be specific about this.

> What about the names of function and member template parameters?
> I know the answer to that one, but a novice might not.
Hmmm - the only template parameters are flagged as

template<class T>

and the first sentence before they are used states

"The template parameter T must correspond to a type which models the
Serializable concept"

and the link points to documentation on the Serializable concept.

So, I don't think I understand the question. (Uh oh, maybe I'm a novice too!
I often feel like here)

> What about the default arguments to member functions? Is it okay to
> write overloads?

What about them? The concept describes necessary and sufficient conditions.
It doesn't prohibit anyone adding there own parameters as long as they are
optional so the concept interface is supported. I don't think I really
understand this question.

Robert Ramey


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk