Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #8064
| 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> |
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
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