Maintenant que nous savons que Concepts ne fait pas partie de C++ 0x, je cherche des méthodes pour imposer des restrictions sur les types dans les fonctions de template.Imposer des contraintes de types de fonctions de template, sans concepts C++ 0x
Voici deux exemples:
Si nous voulons nous assurer qu'un type donné est un entier, nous pouvons utiliser:
template <class N> inline int f(const N n)
{
if ((N)0.1 != 0) // if type of N is floating-point
err()
....
}
si nous voulons nous assurer qu'une donnée type est un entier non signé, nous pouvons utiliser:
template <class N> inline int f(const N n)
{
if ((N)-1 < (N)1) // if type of N is floating-point/signed-integer
err()
....
}
Je cherche des façons créatives t o vérifier s'il y a des restrictions supplémentaires, qui provoqueront un échec en phase d'exécution, ou mieux, à la compilation (sans concepts et sans RTTI).
Des suggestions?