This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos 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: Re: casts to a type other than an integral or enumerationtype in a constant-expression


Andreas Schwab wrote:
Jonathan Larmour <jifl@eCosCentric.com> writes:

|> Nathan Sidwell wrote:
|> > the problem is SIG_DFL is probably,
|> > typedef void (*__sighandler_t) (int);
|> > #define SIG_DFL ((__sighandler_t)0)
|> |> Indeed it's like that. But the whole thing is cast to an int, so the
|> expression as a whole has integral type. From the C++ standard 6.4.2 para
|> 2 that's all that's required, the way I read it. Having a non-integral
|> type in an intermediate stage should make no difference.

But 5.19[#1] also says about integral constant expressions: "Only type
conversions to integral or enumeration types can be used.". A function
cast is not valid according to this clause.
Ah ok. That goes on to say that functions, pointers etc. cannot be "used" which is stronger than just being the result of evaluation.

A good thing I changed the code anyway then :-). Fred, thanks for letting us know about it.

Jifl
--
eCosCentric http://www.eCosCentric.com/ The eCos and RedBoot experts
--[ "You can complain because roses have thorns, or you ]--
--[ can rejoice because thorns have roses." -Lincoln ]-- Opinions==mine


--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss


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