$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Daryle Walker (darylew_at_[hidden])
Date: 2001-07-24 13:26:34
on 7/24/01 12:40 AM, Tim Butler at tim_at_[hidden] wrote:
[SNIP]
> ------------------------------------------------------------------
>> 6.7. Place const after the base type it modifies. This simple rule makes it
>> easier to write type declarations correctly and will make your declarations
>> consistent with compiler-generated type descriptions in error messages.
> 
> o I disagree with this simply because I suspect the "const before" form is
> more familiar to most people. I think most people find the *compiler* messages
> confusing and I don't think it is valuable making them spend extra effort
> interpreting declarations in the code with an unfamiliar style. In fact there
> are a couple instances in this document that appear wrong but require a
> "double take".
I also disagree with the compiler message reason, especially since my
compiler does _not_ do it (i.e. it puts the "const" before the type when
possible).
There is a better reason; putting the qualifier after its base type makes
the placement consistent with all types.  I don't think you realize that not
all types support the pre-qualifier form!  Pointer declarations, that are
not hidden in a typedef, must use the post-qualifier form.  However, all
pre-qualifier types can be post-qualified, so using post-qualification all
the time is the most consistent.
const int  i;
    A constant integer
int const  i;
    Also a constant integer
const int *  p;
    A regular (i.e. non-const) pointer to a constant integer
int const *  p;
    Also a regular pointer to a constant integer
int * const  p;
    A constant pointer to a regular integer
const int **  p;
    A regular pointer to a regular pointer to a constant integer
int const **  p;
    Also a regular pointer to a regular pointer to a constant integer
int * const *  p;
    A regular pointer to a constant pointer to a regular integer
int ** const  p;
    A constant pointer to a regular pointer to a regular integer
volatile int const * volatile * const *  p;
    A regular pointer to a constant pointer to a volatile
    pointer to a constant & volatile integer
> You might rephrase this:
> 
> Place const before the base type it modifies. Every C++ textbook does this and
> so does the C++ standard. :) (please note smiley)
Use the reason I just gave instead.
> Also, when I see a
> const int = 42;
> its easier to imagine the 'const' filling a position for 'static'.
[TRUNCATE]
-- Daryle Walker Mac, Internet, and Video Game Junkie darylew AT mac DOT com