Boost logo

Boost :

From: Gennaro Prota (gennaro_prota_at_[hidden])
Date: 2002-07-20 19:36:22


On Sat, 20 Jul 2002 22:01:41 +0100, "Mark Rodgers"
<mark.rodgers_at_[hidden]> wrote:

>From: "Beman Dawes" <bdawes_at_[hidden]>
>>
>> As Gennaro Prota mentioned, the only headers are C++ Standard Library
>> headers. The standard has no notion of a user header, only a user source
>> file.
>
>I'm not sure how you arrive at that conclusion. As I noted in a another
>message, my interpretation is different.

Well, the problem is that the standard doesn't give a definition of
'header'. Sic stantibus rebus, one tries to "reconstruct" it like a
puzzle from various sentences used here and there.

If I understand you correctly, your interpretation is based on the
fact that you read 16.2/2 as a definition of 'header':

"A preprocessing directive of the form

# include <h-char-sequence> new-line

searches a sequence of implementation-defined places for a header
identified uniquely by the specified sequence between the < and >
delimiters"

That is, you say: "a header is what is searched when a #include <> is
executed".
Granted, it's not that if one wants - and if he takes that sentence
alone - it *cannot* be read this way (I strongly think the standard
should adhere to a more consistent form when giving definitions; for
instance there are places where a definition given 'italicizing' the
term is spanned through several consecutive sentences, and one doesn't
know when the definition ends and the properties of the defined entity
begin; furthermore "free forms" allow different interpretations and
give room to discussions like this. A definition should at least make
clear what is the term that is defined) but the fact is it makes other
parts of the standard weird: why the word 'header' is never used when
speaking of user 'source files' ? (Is it?) And why using the phrase
'header or source file'? For instance why not saying that

- #include <> includes (standard) headers
- #include "" includes headers

and that the search sequence and the name mapping are different
between the two forms?

In this case you would say that a header (standard or not) is a source
file (which AFAIK is not necessarily a file-system file) and you would
be done (2.1/4 would simply become "A #include preprocessing directive
causes the named *header* to be processed")

What else?

P.S.: prayer to the standard folks: why the standard forces us to
discuss for days on such *simple* things (without a conclusion)? what
was difficult in clarifying something like that?

P.P.S. to Mark: yes, the phrase 'library header' (not 'standard
library header') is used in many places but it "implies" that there
are non-library headers just as what I observed above "implies" that
there are not (too sad I think.... please re-read the P.S., the
re-read it, and then... please...read it again...- well this is not
directed to you, of course ;-) )

P.P.P.S.: can someone shed a light on this?

Genny.


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