Mijn vraag
Ik ben redelijk nieuw met het gebruik van templates in C++. Het leek me daarom een goed idee om wat meer ervaring met templates op te doen en dus wat bestaande code te herschrijven. Ik heb op dit moment meerdere helper functies om te controleren of de parity van een specifiek integer type even of oneven is. Om deze code aan te passen naar templates was ik geneigd om het volgende te doen:
De code hierboven is inefficiënt en hoogstwaarschijnlijk fout. Mijn vraag is dus: hoe kan ik een template gebruiken voor size specifieke types, zonder voor elke type een nieuwe template te schrijven ?
Relevante software en hardware die ik gebruik
Visual Studio 2019
Wat ik al gevonden of geprobeerd heb
Google zoeken heeft geen oplossing geboden.
Ik ben redelijk nieuw met het gebruik van templates in C++. Het leek me daarom een goed idee om wat meer ervaring met templates op te doen en dus wat bestaande code te herschrijven. Ik heb op dit moment meerdere helper functies om te controleren of de parity van een specifiek integer type even of oneven is. Om deze code aan te passen naar templates was ik geneigd om het volgende te doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| template <typename T> bool IsEvenParity(T) { switch (sizeof(T)) { case 1: //implementation goes here for uint8_t break; case 2: //implementation goes here for uint16_t break; case 4: ////implementation goes here for uint32_t break; case 8: //implementation goes here for uint64_t break; default: // Incompatible static_assert(sizeof(T) <= 8, "Incompatible integer type T") } } |
De code hierboven is inefficiënt en hoogstwaarschijnlijk fout. Mijn vraag is dus: hoe kan ik een template gebruiken voor size specifieke types, zonder voor elke type een nieuwe template te schrijven ?
Relevante software en hardware die ik gebruik
Visual Studio 2019
Wat ik al gevonden of geprobeerd heb
Google zoeken heeft geen oplossing geboden.