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


Groups > comp.lang.c > #388676

Re: constexpr keyword is unnecessary

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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