Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #388676
| From | Keith Thompson <Keith.S.Thompson+u@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: constexpr keyword is unnecessary |
| Date | 2024-10-18 16:54 -0700 |
| Organization | None to speak of |
| Message-ID | <877ca5q84u.fsf@nosuchdomain.example.com> (permalink) |
| References | <veb5fi$3ll7j$1@dont-email.me> |
Thiago Adams <thiago.adams@gmail.com> writes:
> I think constexpr keyword is unnecessary.
Sure, most language features are strictly unnecessary.
> Anything you do with it could/should be done with const.
No, absolutely not.
Keep in mind that "const" doesn't mean "constant".
In C, "constant" means (roughly) evaluable at compile time. (And as a
noun, it refers to what many other languages call "literals".)
The "const" keyword means "read-only"; the object it applies to cannot
be modified after it's initialized. The fact that the spelling of
the "const" keyword is derived from the word "constant" has caused a
great deal of confusion. Spelling it as "readonly" rather than "const"
would have avoided most of that confusion.
As of C11, the "const" keyword *never* makes an identifer usable in a
context that requires a constant expression. Given the following:
const int foo = <initializer>;
foo is treated the same way whether the initializer is constant
(e.g., 42) or not (e.g., rand()).
It's unfortunate that C11 doesn't provide a convenient way to define an
identifier as a constant expression of any arbitrary type. Adding
constexpr in C23 addresses that problem.
C++ made what was, in my opinion, an unfortunate decision. Given:
const int foo = 42;
const int bar = rand();
the name foo is a constant expression, but bar is not. This feature
(hack, IMHO) was added to C++ at a time that constexpr did not yet
exist.
So in C11, it's easy to explain what "const" means, but in C++ it's more
difficult because of that special-case rule.
"const" and "constexpr" do very different things. Conflating those into
a single keyword is not helpful. It might make the language easier to
use in some cases, but it makes it harder to explain. Spelling "const"
as "readonly" would have been an improvement, but it's far too late to
do that.
--
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
void Void(void) { Void(); } /* The recursive call of the void */
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar
constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-11 09:25 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-11 20:03 +0200
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-11 15:11 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-11 21:17 +0200
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-11 16:30 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-12 06:39 +0200
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-12 10:23 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-12 15:52 +0200
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-12 18:37 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-13 12:51 +0200
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-13 08:32 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-13 13:39 +0200
Re: constexpr keyword is unnecessary DFS <nospam@dfs.com> - 2024-10-14 23:30 -0400
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-15 13:41 +0200
Re: constexpr keyword is unnecessary Bart <bc@freeuk.com> - 2024-10-15 14:01 +0100
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-15 10:11 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-15 15:27 +0200
Re: constexpr keyword is unnecessary Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-10-16 08:35 +0200
Re: constexpr keyword is unnecessary Kaz Kylheku <643-408-1753@kylheku.com> - 2024-10-15 20:31 +0000
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-16 07:14 +0200
Re: constexpr keyword is unnecessary Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-10-16 08:44 +0200
Re: constexpr keyword is unnecessary Kaz Kylheku <643-408-1753@kylheku.com> - 2024-10-13 16:39 +0000
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-13 14:39 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-13 20:13 +0200
Re: constexpr keyword is unnecessary Kaz Kylheku <643-408-1753@kylheku.com> - 2024-10-13 18:21 +0000
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-13 18:12 -0300
Re: constexpr keyword is unnecessary Bart <bc@freeuk.com> - 2024-10-12 14:53 +0100
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-12 18:43 -0300
Re: constexpr keyword is unnecessary Bart <bc@freeuk.com> - 2024-10-13 10:52 +0100
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-13 08:37 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-13 13:49 +0200
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-13 09:38 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-13 14:58 +0200
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-13 10:09 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-13 15:14 +0200
Re: constexpr keyword is unnecessary Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-10-13 15:35 +0200
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-13 15:47 +0200
Re: constexpr keyword is unnecessary Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-10-13 16:33 +0200
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-13 16:41 +0200
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-13 11:52 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-13 17:14 +0200
Re: constexpr keyword is unnecessary Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-10-13 17:03 +0200
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-13 17:19 +0200
Re: constexpr keyword is unnecessary Michael S <already5chosen@yahoo.com> - 2024-10-13 16:06 +0300
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-13 10:10 -0300
Re: constexpr keyword is unnecessary Michael S <already5chosen@yahoo.com> - 2024-10-13 16:29 +0300
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-13 10:50 -0300
Re: constexpr keyword is unnecessary Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-10-18 16:54 -0700
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-19 09:18 +0200
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-19 12:18 -0300
Re: constexpr keyword is unnecessary David Brown <david.brown@hesbynett.no> - 2024-10-19 18:03 +0200
Re: constexpr keyword is unnecessary Bart <bc@freeuk.com> - 2024-10-19 18:22 +0100
Re: constexpr keyword is unnecessary David Brown <david.brown@hesbynett.no> - 2024-10-20 12:40 +0200
Re: constexpr keyword is unnecessary Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-10-20 11:28 -0700
Re: constexpr keyword is unnecessary Opus <ifonly@youknew.org> - 2024-10-21 03:02 +0200
Re: constexpr keyword is unnecessary David Brown <david.brown@hesbynett.no> - 2024-10-21 08:40 +0200
Re: constexpr keyword is unnecessary Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-10-21 13:47 -0700
Re: constexpr keyword is unnecessary "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2024-10-21 14:20 -0700
Re: constexpr keyword is unnecessary Kaz Kylheku <643-408-1753@kylheku.com> - 2024-10-22 02:43 +0000
Re: constexpr keyword is unnecessary "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2024-10-22 12:18 -0700
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-19 16:41 -0300
Re: constexpr keyword is unnecessary Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-10-19 14:48 -0700
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-19 19:49 -0300
Re: constexpr keyword is unnecessary Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-10-19 21:08 -0700
Re: constexpr keyword is unnecessary Michael S <already5chosen@yahoo.com> - 2024-10-20 14:59 +0300
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-20 09:22 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-22 10:02 +0200
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-22 09:48 -0300
Re: constexpr keyword is unnecessary Vir Campestris <vir.campestris@invalid.invalid> - 2024-10-26 15:07 +0100
Re: constexpr keyword is unnecessary James Kuyper <jameskuyper@alumni.caltech.edu> - 2024-10-26 11:08 -0400
Re: constexpr keyword is unnecessary Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-10-26 20:28 +0200
Re: constexpr keyword is unnecessary scott@slp53.sl.home (Scott Lurndal) - 2024-10-26 19:37 +0000
Re: constexpr keyword is unnecessary Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-10-26 21:58 -0700
Re: constexpr keyword is unnecessary scott@slp53.sl.home (Scott Lurndal) - 2024-10-27 17:22 +0000
Re: constexpr keyword is unnecessary Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-11-03 19:06 -0800
Re: constexpr keyword is unnecessary Lowell Gilbert <lgusenet@be-well.ilk.org> - 2024-11-04 12:57 -0500
Re: constexpr keyword is unnecessary Kaz Kylheku <643-408-1753@kylheku.com> - 2024-11-04 19:38 +0000
Re: constexpr keyword is unnecessary Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-11-07 05:15 -0800
Re: constexpr keyword is unnecessary Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-10-26 21:54 -0700
Re: constexpr keyword is unnecessary David Brown <david.brown@hesbynett.no> - 2024-10-27 15:24 +0100
Re: constexpr keyword is unnecessary David Brown <david.brown@hesbynett.no> - 2024-10-27 15:21 +0100
Re: constexpr keyword is unnecessary Kaz Kylheku <643-408-1753@kylheku.com> - 2024-10-28 06:13 +0000
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-28 08:58 -0300
Re: constexpr keyword is unnecessary Kaz Kylheku <643-408-1753@kylheku.com> - 2024-10-29 05:04 +0000
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-29 09:16 -0300
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-29 09:21 -0300
Re: constexpr keyword is unnecessary David Brown <david.brown@hesbynett.no> - 2024-10-29 15:13 +0100
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-29 11:46 -0300
Re: constexpr keyword is unnecessary David Brown <david.brown@hesbynett.no> - 2024-10-29 19:27 +0100
Re: constexpr keyword is unnecessary Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-10-30 01:41 +0100
Re: constexpr keyword is unnecessary Kaz Kylheku <643-408-1753@kylheku.com> - 2024-10-29 20:57 +0000
Re: constexpr keyword is unnecessary Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-11-05 07:46 -0800
Re: constexpr keyword is unnecessary Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-11-05 07:48 -0800
Re: constexpr keyword is unnecessary Richard Harnden <richard.nospam@gmail.invalid> - 2024-10-29 17:26 +0000
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-29 14:48 -0300
Re: constexpr keyword is unnecessary Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-10-26 21:37 -0700
Re: constexpr keyword is unnecessary David Brown <david.brown@hesbynett.no> - 2024-10-27 15:32 +0100
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-19 22:56 -0300
Re: constexpr keyword is unnecessary Bonita Montero <Bonita.Montero@gmail.com> - 2024-10-20 18:12 +0200
Re: constexpr keyword is unnecessary David Brown <david.brown@hesbynett.no> - 2024-10-20 12:45 +0200
Re: constexpr keyword is unnecessary Bart <bc@freeuk.com> - 2024-10-20 12:23 +0100
Re: constexpr keyword is unnecessary David Brown <david.brown@hesbynett.no> - 2024-10-20 13:36 +0200
Re: constexpr keyword is unnecessary Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-10-19 14:24 -0700
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-19 19:13 -0300
Re: constexpr keyword is unnecessary David Brown <david.brown@hesbynett.no> - 2024-10-20 12:55 +0200
Re: constexpr keyword is unnecessary Michael S <already5chosen@yahoo.com> - 2024-10-19 19:53 +0300
Re: constexpr keyword is unnecessary Thiago Adams <thiago.adams@gmail.com> - 2024-10-19 16:35 -0300
Re: constexpr keyword is unnecessary Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-10-19 14:49 -0700
csiph-web