Re: constexpr keyword is unnecessary

Liste des GroupesRevenir à cl c  
Sujet : Re: constexpr keyword is unnecessary
De : david.brown (at) *nospam* hesbynett.no (David Brown)
Groupes : comp.lang.c
Date : 29. Oct 2024, 15:13:16
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vfqqhs$1j1i2$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0
On 29/10/2024 13:21, Thiago Adams wrote:
On 29/10/2024 09:16, Thiago Adams wrote:
 Edit to fix the sample
 // Here we acknowledge the truncation
void f(int i) {
     ...
     const unsigned char c = i; [[!truncation]];
}
  // Warning: there is no truncation to acknowledge.
void f(unsigned char i) {
     ...
     const unsigned char c = i; [[!truncation]];
}
 
This should give you what you are asking for, if I have understood you correctly:
#define truncate(type, value) \
     _Generic((value), \
         type : (void) 0, \
         default : (type) value \
     )
// OK
void f1(int i) {
const auto c = truncate(unsigned char, i);
}
// Error
void f1(unsigned char i) {
const auto c = truncate(unsigned char, i);
}
I am not at all convinced this is a good idea.  I am /certainly/ not convinced "truncate" is a good name - the general term, AFAIK, for a conversion that might try to squeeze a large value into a smaller type is "narrowing" rather than "truncating".
You could expand the idea further and have a "truncate" macro that checks for bounds at run time or compile time (I'd make use of the gcc extension __builtin_constant_p here, but there may be a fully standard way to do this).

Date Sujet#  Auteur
11 Oct 24 * constexpr keyword is unnecessary106Thiago Adams
11 Oct 24 +* Re: constexpr keyword is unnecessary25Bonita Montero
11 Oct 24 i`* Re: constexpr keyword is unnecessary24Thiago Adams
11 Oct 24 i `* Re: constexpr keyword is unnecessary23Bonita Montero
11 Oct 24 i  `* Re: constexpr keyword is unnecessary22Thiago Adams
12 Oct 24 i   +* Re: constexpr keyword is unnecessary16Bonita Montero
12 Oct 24 i   i`* Re: constexpr keyword is unnecessary15Thiago Adams
12 Oct 24 i   i `* Re: constexpr keyword is unnecessary14Bonita Montero
12 Oct 24 i   i  `* Re: constexpr keyword is unnecessary13Thiago Adams
13 Oct 24 i   i   `* Re: constexpr keyword is unnecessary12Bonita Montero
13 Oct 24 i   i    +* Re: constexpr keyword is unnecessary2Thiago Adams
13 Oct 24 i   i    i`- Re: constexpr keyword is unnecessary1Bonita Montero
15 Oct 24 i   i    `* Re: constexpr keyword is unnecessary9DFS
15 Oct 24 i   i     `* Re: constexpr keyword is unnecessary8Bonita Montero
15 Oct 24 i   i      `* Re: constexpr keyword is unnecessary7Bart
15 Oct 24 i   i       +* Re: constexpr keyword is unnecessary3Thiago Adams
15 Oct 24 i   i       i+- Re: constexpr keyword is unnecessary1Bonita Montero
16 Oct 24 i   i       i`- Re: constexpr keyword is unnecessary1Janis Papanagnou
15 Oct 24 i   i       `* Re: constexpr keyword is unnecessary3Kaz Kylheku
16 Oct 24 i   i        +- Re: constexpr keyword is unnecessary1Bonita Montero
16 Oct 24 i   i        `- Re: constexpr keyword is unnecessary1Janis Papanagnou
13 Oct 24 i   `* Re: constexpr keyword is unnecessary5Kaz Kylheku
13 Oct 24 i    `* Re: constexpr keyword is unnecessary4Thiago Adams
13 Oct 24 i     +- Re: constexpr keyword is unnecessary1Bonita Montero
13 Oct 24 i     `* Re: constexpr keyword is unnecessary2Kaz Kylheku
13 Oct 24 i      `- Re: constexpr keyword is unnecessary1Thiago Adams
12 Oct 24 +* Re: constexpr keyword is unnecessary21Bart
12 Oct 24 i`* Re: constexpr keyword is unnecessary20Thiago Adams
13 Oct 24 i `* Re: constexpr keyword is unnecessary19Bart
13 Oct 24 i  `* Re: constexpr keyword is unnecessary18Thiago Adams
13 Oct 24 i   `* Re: constexpr keyword is unnecessary17Bonita Montero
13 Oct 24 i    `* Re: constexpr keyword is unnecessary16Thiago Adams
13 Oct 24 i     +* Re: constexpr keyword is unnecessary11Bonita Montero
13 Oct 24 i     i`* Re: constexpr keyword is unnecessary10Thiago Adams
13 Oct 24 i     i `* Re: constexpr keyword is unnecessary9Bonita Montero
13 Oct 24 i     i  `* Re: constexpr keyword is unnecessary8Janis Papanagnou
13 Oct 24 i     i   `* Re: constexpr keyword is unnecessary7Bonita Montero
13 Oct 24 i     i    `* Re: constexpr keyword is unnecessary6Janis Papanagnou
13 Oct 24 i     i     `* Re: constexpr keyword is unnecessary5Bonita Montero
13 Oct 24 i     i      +* Re: constexpr keyword is unnecessary2Thiago Adams
13 Oct 24 i     i      i`- Re: constexpr keyword is unnecessary1Bonita Montero
13 Oct 24 i     i      `* Re: constexpr keyword is unnecessary2Janis Papanagnou
13 Oct 24 i     i       `- Re: constexpr keyword is unnecessary1Bonita Montero
13 Oct 24 i     `* Re: constexpr keyword is unnecessary4Michael S
13 Oct 24 i      `* Re: constexpr keyword is unnecessary3Thiago Adams
13 Oct 24 i       `* Re: constexpr keyword is unnecessary2Michael S
13 Oct 24 i        `- Re: constexpr keyword is unnecessary1Thiago Adams
19 Oct 24 `* Re: constexpr keyword is unnecessary59Keith Thompson
19 Oct 24  +- Re: constexpr keyword is unnecessary1Bonita Montero
19 Oct 24  `* Re: constexpr keyword is unnecessary57Thiago Adams
19 Oct 24   +* Re: constexpr keyword is unnecessary53David Brown
19 Oct 24   i+* Re: constexpr keyword is unnecessary9Bart
20 Oct 24   ii`* Re: constexpr keyword is unnecessary8David Brown
20 Oct 24   ii `* Re: constexpr keyword is unnecessary7Keith Thompson
21 Oct 24   ii  +- Re: constexpr keyword is unnecessary1Opus
21 Oct 24   ii  `* Re: constexpr keyword is unnecessary5David Brown
21 Oct 24   ii   `* Re: constexpr keyword is unnecessary4Keith Thompson
21 Oct 24   ii    `* Re: constexpr keyword is unnecessary3Chris M. Thomasson
22 Oct 24   ii     `* Re: constexpr keyword is unnecessary2Kaz Kylheku
22 Oct 24   ii      `- Re: constexpr keyword is unnecessary1Chris M. Thomasson
19 Oct 24   i+* Re: constexpr keyword is unnecessary40Thiago Adams
19 Oct 24   ii+* Re: constexpr keyword is unnecessary36Keith Thompson
20 Oct 24   iii+* Re: constexpr keyword is unnecessary33Thiago Adams
20 Oct 24   iiii`* Re: constexpr keyword is unnecessary32Keith Thompson
20 Oct 24   iiii +- Re: constexpr keyword is unnecessary1Michael S
20 Oct 24   iiii `* Re: constexpr keyword is unnecessary30Thiago Adams
22 Oct 24   iiii  `* Re: constexpr keyword is unnecessary29Bonita Montero
22 Oct 24   iiii   `* Re: constexpr keyword is unnecessary28Thiago Adams
26 Oct 24   iiii    `* Re: constexpr keyword is unnecessary27Vir Campestris
26 Oct 24   iiii     +* Re: constexpr keyword is unnecessary24James Kuyper
26 Oct 24   iiii     i+* Re: constexpr keyword is unnecessary6Janis Papanagnou
27 Oct 24   iiii     ii`* Re: constexpr keyword is unnecessary5Tim Rentsch
4 Nov 24   iiii     ii `* Re: constexpr keyword is unnecessary4Tim Rentsch
4 Nov 24   iiii     ii  `* Re: constexpr keyword is unnecessary3Lowell Gilbert
4 Nov 24   iiii     ii   +- Re: constexpr keyword is unnecessary1Kaz Kylheku
7 Nov 24   iiii     ii   `- Re: constexpr keyword is unnecessary1Tim Rentsch
27 Oct 24   iiii     i+* Re: constexpr keyword is unnecessary2Tim Rentsch
27 Oct 24   iiii     ii`- Re: constexpr keyword is unnecessary1David Brown
27 Oct 24   iiii     i+- Re: constexpr keyword is unnecessary1David Brown
28 Oct 24   iiii     i`* Re: constexpr keyword is unnecessary14Kaz Kylheku
28 Oct 24   iiii     i `* Re: constexpr keyword is unnecessary13Thiago Adams
29 Oct 24   iiii     i  +* Re: constexpr keyword is unnecessary10Kaz Kylheku
29 Oct 24   iiii     i  i+* Re: constexpr keyword is unnecessary8Thiago Adams
29 Oct 24   iiii     i  ii+* Re: constexpr keyword is unnecessary5Thiago Adams
29 Oct 24   iiii     i  iii`* Re: constexpr keyword is unnecessary4David Brown
29 Oct 24   iiii     i  iii +* Re: constexpr keyword is unnecessary2Thiago Adams
29 Oct 24   iiii     i  iii i`- Re: constexpr keyword is unnecessary1David Brown
30 Oct 24   iiii     i  iii `- Re: constexpr keyword is unnecessary1Janis Papanagnou
29 Oct 24   iiii     i  ii`* Re: constexpr keyword is unnecessary2Kaz Kylheku
5 Nov 24   iiii     i  ii `- Re: constexpr keyword is unnecessary1Tim Rentsch
5 Nov 24   iiii     i  i`- Re: constexpr keyword is unnecessary1Tim Rentsch
29 Oct 24   iiii     i  `* Re: constexpr keyword is unnecessary2Richard Harnden
29 Oct 24   iiii     i   `- Re: constexpr keyword is unnecessary1Thiago Adams
27 Oct 24   iiii     `* Re: constexpr keyword is unnecessary2Tim Rentsch
27 Oct 24   iiii      `- Re: constexpr keyword is unnecessary1David Brown
20 Oct 24   iii`* Re: constexpr keyword is unnecessary2Thiago Adams
20 Oct 24   iii `- Re: constexpr keyword is unnecessary1Bonita Montero
20 Oct 24   ii`* Re: constexpr keyword is unnecessary3David Brown
20 Oct 24   ii `* Re: constexpr keyword is unnecessary2Bart
20 Oct 24   ii  `- Re: constexpr keyword is unnecessary1David Brown
19 Oct 24   i`* Re: constexpr keyword is unnecessary3Keith Thompson
19 Oct 24   `* Re: constexpr keyword is unnecessary3Michael S

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal