This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: C++ static integer class constants...


On Tue, 2005-10-18 at 01:19 -0500, John Ratliff wrote:
> > * John Ratliff:
> > 
> > > On comp.lang.c++, Victor Bazarov says my example program is well-formed
> > > standard C++ according to the ISO C++ standard.
> > >
> > > "Since their address is never taken, the 'foo::A' and 'foo::B' are, in
> > > fact, compile-time constant expressions that do not require storage.
> > > The objects, therefore, don't need to be defined outside of the class
> > > definition.
> > 
> > This analysis argues from the implementation, not from the standard.
> > 
> > The standard requires that you provide a definition if you use the
> > constant in a place which does not *require* a constant expression.
> > In other words,
> > 
> >   int foo[Class::static_const_member];
> > 
> > is fine without a definition, but
> > 
> >   int bar = Class::static_const_member;
> > 
> > is not.
> > 
> > It's strange and smells like a mistake in the standard.
> 
> In response to my message on comp.lang.c++, Greg Comeau replies
> 
> "That's what it says but isn't what it meant.  What it meant is what Victor
> said, and hence it was acknowledged as a defect since requiring the
> definition in all cases was not the intent when member constants were
> allowed."
> 
> So, it seems that it is a mistake in the standard. For anyone who doesn't
> know him, Greg Comeau is a member of the C++ standards committee.
> 
> I think g++ is trying to do the correct thing (according to the intent of
> the committee), even in 3.3, but has one problem area. I am going to leave
> out my definitions for now since it will compile on both 3.3 and 3.4 now
> that I've removed the ternary expression.

This is very important and should be sent to the GCC developers' mailing
list so that they can toss this around a bit.  Do you subscribe there as
well?

Thanks,
Ernesto




> 
> --John Ratliff
> 
> 
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]