Bonjour,

je viens d'écrire une petite classe pour gérer les types d'entiers par taille :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
 
template<bool b, typename T1, typename T2>
class If
{
public:
	typedef T1 Res;
};
 
template<typename T1, typename T2>
class If<false, T1, T2>
{
public:
	typedef T2 Res;
};
 
template<int bits>
class Int
{
public:
	typedef
		typename If<
			(sizeof(short)==bits/8),
			short,
			typename If<
				(sizeof(int)==bits/8),
				int,
				typename If<
					(sizeof(long)==bits/8),
					long,
					void
				>::Res
			>::Res
		>::Res
	T;
};
 
typedef Int<16>::T Int16;
typedef Int<32>::T Int32;
typedef Int<64>::T Int64;
 
int main()
{
	Int32 i = 10;
	std::cout<<i<<std::endl;
}
J'aimerais savoir, si il y a des erreurs de conception (je débute dans les templates), et si c'est une solution viable pour définir ces types d'entier?