Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #8064

Re: Size of bool unspecified: why?

From "JBarleycorn" <jbnh2o@newsnet.org>
Newsgroups comp.lang.c++
Subject Re: Size of bool unspecified: why?
Date 2011-07-21 18:29 -0500
Organization A noiseless patient Spider
Message-ID <j0acoa$h7u$1@dont-email.me> (permalink)
References (6 earlier) <98pi8pFroiU1@mid.individual.net> <j089to$j9f$1@dont-email.me> <98pp2qFroiU2@mid.individual.net> <j08m2h$ch6$1@dont-email.me> <98q5oiFroiU3@mid.individual.net>

Show all headers | View raw


Ian Collins wrote:
> On 07/21/11 07:56 PM, JBarleycorn wrote:
>> "Ian Collins"<ian-news@hotmail.com>  wrote :
>>> On 07/21/11 04:28 PM, JBarleycorn wrote:
>>>> "Ian Collins"<ian-news@hotmail.com>   wrote:
>>>>> On 07/21/11 12:32 PM, JBarleycorn wrote:
>>>>>>
>>>>>> How can bools be used in structs if every implementation can
>>>>>> define it
>>>>>> differently?
>>>>>
>>>>> The same way ints can be used in structs when every implementation
>>>>> can
>>>>> define them differently.
>>>>
>>>> You can used fixed-width integers but there is no complementary
>>>> bool type. bool is unusable in structs in many instances then.
>>>> Serialization
>>>> is not a panacea, it's tedium.
>>>
>>> The only places where sizeof(bool) matters it will be defined.
>>
>> The need for fixed-width integers has been proven and therefore they
>> are in the standard, but then they forget the past and create a new
>> type and don't consider that width matters for that type. Either
>> that or they considered it not useful in the situations where the
>> fixed-width integers are a boon. They should have specified a width,
>> as the alternative of having multiple booleans of different widths
>> isn't practical I believe.
>
> That argument doesn't make sense, given we have fixed with types, why
> should the with of any natural type be fixed?  The analogy with int
> still applies.  If I want a 32 bit signed type, I'll use int32_t.
> Whether that is an int or a long under the hood is irrelevant.
>
>> A header of an application program can check if fixed-width integer
>> types are what the program expects and if not, then adjustments can
>> be made, but with bool, whaddaya going to do if the size of bool
>> doesn't meet the app's expectations?
>
> Who often have you needed to know the size of bool?  What do you do if
> sizeof(int) isn't what the program expects?

Why would anyone expect sizeof(int) to be anything specific? int is not 
an issue. The fixed-width sizes are an issue, but you can test for it and 
do whatever is necessary to maintain consistency.

> You use a different type.

A different numeric type, which there are a number to choose from. Who 
writes a program that doesn't have a header that tests for assumptions 
based upon the platform?

> How is bool different?

If bool doesn't meet your expectations, you don't have the option to 
change to a similar type of different width, because there is no similar 
type of different width. You have to change compilers or something. *Or*, 
avoid bool from the get go noting from the start that you can't rely on 
the width of bool. What the current practice is across a wide variety of 
compilers, or just the "major" ones, I don't know: that would be good 
info and maybe some consolation, but bool does appear to be broken from 
the get go.

>
>> Use an integer of the right size? What's the point of
>> having a bool at all then if it is likely that some compiler or
>> version of it doesn't support the needed type?
>
> Again, how often is the size of a natural type important?

*Very* often.

> How often
> in real code do you use a fixed width type?

*Very* often. *Very* much more often than using non-fixed-width integral 
types.

> I'm sure I use them more
> than most because a lot of my work is on embedded platforms or
> drivers.

Well there you go then.

> I seldom use them anywhere else.
>
>> It seems that any case you make for the width of bool being OK
>> unspecified, refutes the need for fixed-width integer types, and
>> vice-versa. Where is the consistency?
>
> It isn't unspecified, it is implementation defined, just like int.

The same issue exists with int, *but* there are the alternative 
fixed-width integral types and even when their weren't the fixed-width 
types, there was still enough choice there to get what is desired. I use 
a boolean class, where I can control the width and still get the behavior 
of a boolean,  for use in structs but I have to because built-in bool is 
broken.

>
>>>>> Efficient in time can be the same as efficient in space.  The most
>>>>> valuable resource on modern CPUs is the cache, the bigger a data
>>>>> type,
>>>>> the quicker the cache overflows.  That's why performance of some
>>>>> applications is better built 64 bit and worse for others.
>>>>>
>>>>
>>>> I guess I'll just have to profile it myself and see if there is
>>>> significant difference.
>>>
>>> Define "it".
>>>
>>> What part of "performance of some applications is better built 64
>>> bit and worse for others" didn't you get?
>>
>> I don't think it is as nebulous as you make it seem. I gave 3
>> instances: arguments, return vals and arithmetic. I don't believe
>> that *no* conclusions can be drawn from analysis of those instances
>> in regards to integer sizes. Yes, the assumptions (platforms,
>> compilers...) will have to be stated, but that's how scientific
>> study works: you study some finite subset of the universe to gain
>> insight.
>
> Thing go horribly wrong when you study the wrong subset.
>
>> That insight, as a
>> practical matter, is what I was looking for. If I was building a
>> language from scratch and choosing a size for the boolean type, the
>> performance of that type, as a practical matter, would or might
>> factor into the design of that type. Similarly, if I was introducing
>> a boolean type into a language that does not yet have one, I would
>> consider the same issue.
>
> So what would you do if 8 bits performed best on one platform and 32
> on another?

I would use that information in choosing a design.

> You would make the size implementation defined.

No, not likely for then bool would be eliminated from a lot of places 
where it could be used to good effect. I think multiple-width boolean 
types can be made to work, but the complexity is not worth it, so 1-byte 
bools, even though there may be a performance penalty on most platforms, 
are probably the best choice. I have pretty much decided that where a 
"fast bool" is needed it's a profile/optimizaation thing and trying to 
find an optimum boolean type size as the best compromise across a set of 
platforms falls into the category of premature optimization. Therefore, 
the overriding concern is suitability for use as a struct field. So, my 
boolean class uses a 1-byte type as the underlying type. 

Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Size of bool unspecified: why? "MikeP" <mp011011@some.org> - 2011-07-16 05:33 -0500
  Re: Size of bool unspecified: why? BGB <cr88192@hotmail.com> - 2011-07-16 10:02 -0700
    Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-20 13:05 -0700
      Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-20 15:46 -0500
        Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-21 09:01 +1200
          Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-20 19:32 -0500
            Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-21 14:46 +1200
              Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-20 23:28 -0500
                Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-21 16:43 +1200
                Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-21 02:56 -0500
                Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-21 20:19 +1200
                Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-21 18:29 -0500
                Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-22 11:40 +1200
                Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-21 22:33 -0500
                Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-22 15:46 +1200
                Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-21 23:07 -0500
                Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-22 16:12 +1200
                Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-31 18:45 +1200
                Re: Size of bool unspecified: why? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-07-22 00:12 -0700
                Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-22 11:10 -0700
                Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-22 16:52 -0500
                Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-23 09:55 +1200
                Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-22 11:01 -0700
                Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-22 17:17 -0500
                Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-23 10:46 +1200
                Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-24 03:48 -0700
                Re: Size of bool unspecified: why? Robert Wessel <robertwessel2@yahoo.com> - 2011-07-24 12:40 -0500
                Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-30 11:22 -0700
                Re: Size of bool unspecified: why? "Alf P. Steinbach" <alf.p.steinbach:usenet@gmail.com> - 2011-07-31 02:33 +0200
                Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-30 11:34 -0700
                Re: Size of bool unspecified: why? "Alf P. Steinbach" <alf.p.steinbach:usenet@gmail.com> - 2011-07-25 04:46 +0200
                Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-21 07:23 -0700
                Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-21 18:52 -0500
                Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-22 11:24 -0700
                Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-22 17:22 -0500
                Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-23 10:51 +1200
                Re: Size of bool unspecified: why? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-07-22 00:17 -0700
                Re: Size of bool unspecified: why? Robert Wessel <robertwessel2@yahoo.com> - 2011-07-22 04:26 -0500
            Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-21 02:09 -0700
              Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-21 19:11 -0500
                Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-22 11:58 -0700
                Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-22 17:48 -0500
            Re: Size of bool unspecified: why? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-07-21 08:41 -0700
              Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-21 19:14 -0500
                Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-22 12:01 -0700
                Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-22 17:51 -0500
        Re: Size of bool unspecified: why? Noah Roberts <dont@email.me> - 2011-07-20 16:57 -0700
          Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-21 07:29 -0700
            Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-21 19:24 -0500
              Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-22 12:33 +1200
                Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-21 22:42 -0500
        Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-21 01:59 -0700
          Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-21 19:42 -0500
            Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-22 12:20 -0700
              Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-22 18:21 -0500
  Re: Size of bool unspecified: why? Robert Wessel <robertwessel2@yahoo.com> - 2011-07-16 22:23 -0500
    Re: Size of bool unspecified: why? "MikeP" <mp011011@some.org> - 2011-07-17 00:07 -0500
      Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-17 17:15 +1200
        Re: Size of bool unspecified: why? "MikeP" <mp011011@some.org> - 2011-07-17 00:24 -0500
      Re: Size of bool unspecified: why? Robert Wessel <robertwessel2@yahoo.com> - 2011-07-17 02:02 -0500
        Re: Size of bool unspecified: why? "MikeP" <mp011011@some.org> - 2011-07-17 03:02 -0500
          Re: Size of bool unspecified: why? Robert Wessel <robertwessel2@yahoo.com> - 2011-07-17 03:23 -0500
            Re: Size of bool unspecified: why? "MikeP" <mp011011@some.org> - 2011-07-17 05:36 -0500
              Re: Size of bool unspecified: why? "James" <no@spam.invalid> - 2011-07-17 16:24 -0700
                Re: Size of bool unspecified: why? "MikeP" <mp011011@some.org> - 2011-07-18 06:49 -0500
                Re: Size of bool unspecified: why? "James" <no@spam.invalid> - 2011-07-18 16:46 -0700
                Re: Size of bool unspecified: why? Ian Collins <ian-news@hotmail.com> - 2011-07-19 11:59 +1200
                Re: Size of bool unspecified: why? "MikeP" <mp011011@some.org> - 2011-07-19 22:18 -0500
        Re: Size of bool unspecified: why? "MikeP" <mp011011@some.org> - 2011-07-17 03:04 -0500
      Re: Size of bool unspecified: why? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-07-22 00:32 -0700
      Re: Size of bool unspecified: why? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-07-22 00:41 -0700
  Re: Size of bool unspecified: why? Juha Nieminen <nospam@thanks.invalid> - 2011-07-17 13:50 +0000
    Re: Size of bool unspecified: why? "MikeP" <mp011011@some.org> - 2011-07-18 06:50 -0500
      Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-20 13:06 -0700
    Re: Size of bool unspecified: why? Pawel Dziepak <pdziepak@quarnos.org> - 2011-07-21 12:59 +0000
      Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-21 07:11 -0700
        Re: Size of bool unspecified: why? "JBarleycorn" <jbnh2o@newsnet.org> - 2011-07-21 19:21 -0500
          Re: Size of bool unspecified: why? James Kanze <james.kanze@gmail.com> - 2011-07-22 12:28 -0700

csiph-web