Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #388699
| From | Keith Thompson <Keith.S.Thompson+u@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: constexpr keyword is unnecessary |
| Date | 2024-10-19 14:48 -0700 |
| Organization | None to speak of |
| Message-ID | <87y12jpxvl.fsf@nosuchdomain.example.com> (permalink) |
| References | <veb5fi$3ll7j$1@dont-email.me> <877ca5q84u.fsf@nosuchdomain.example.com> <vf0ijd$3u54q$1@dont-email.me> <vf0l98$3un4n$1@dont-email.me> <vf1216$p0c$1@dont-email.me> |
Thiago Adams <thiago.adams@gmail.com> writes:
> Em 10/19/2024 1:03 PM, David Brown escreveu:
>> On 19/10/2024 17:18, Thiago Adams wrote:
>>> Em 10/18/2024 8:54 PM, Keith Thompson escreveu:
>>>> 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.
>>>>
>>>
>>> If not, do you have a sample where, using "const" as "constexpr",
>>> would create problems?
>>>
>>> The sample I know is VLA.
>>>
>>> const int c = 2;
>>> int a[c]; //a is VLA because c is not a constant expression.
>>>
>>>
>>> But this is not enough to convince me because it is better not to
>>> be a VLA here.
>>>
>> What practical difference would it make?
>
> I don't see any practical difference. In theory, the generated code
> could be different, but I'm arguing that this doesn't really matter
> and, consequently, it's not a good reason to differentiate between
> const and constexpr.
My reasons for not wanting `const int c = 2;` to make c a constant
expression have nothing to do with any theoretical difference in
generated code.
My reason is that "const" and "constant" are two almost entirely
distinct concepts. Conflating them makes the language more confusing.
Making the name of a "const" object a constant expression adds no new
capabilities beyone what we already have with "constexpr".
Though the C23 standard hasn't yet been officially released, it's too
late to make any substantive changes. C23 *will* have constexpr, and
*will not* treat const-qualified objects as constants.
If I want a name for a constant expression of type int, I can (in C23)
use "constexpr", which clearly expresses that intent. Using "const"
instead, in all versions of C up to and including C23, will result in
compile-time errors.
Let's pretend that when "const" was introduced in C89, it was spelled
"readonly", which more closely reflects its meaning. Would you suggest
that
readonly int n = 42;
should make n a constant expression?
What you propose would make n a constant expression if and only if its
initializer is constant. In C23, n is a constant expression if and only
if n is defined with "constexpr". If you add "constexpr" to a
declaration whose initializer is not a constant expression, it will be
rejected.
--
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