vous pouvez utiliser quelque chose comme ceci:
#define var(T,...) T<__VA_ARGS__,__LINE__>
ou si vous faites seulement cela pour un type savoir:
#define var(x) T<(x),__LINE__>
Je suggère d'utiliser __COUNTER__
au lieu de __LINE__
cependant, il permet le type à être globalement unique, non seulement unique à la ligne.
EDIT: relisez la question, qu'entendez-vous exactement par "nombre entier différent"? comme dans un type différent ou une valeur d'initialisation différente?
template<typename T = int, const T nValue> class Integer
{
T Value;
Integer() : Value(nValue)
{
}
operator T()
{
return Value;
}
};
#define VI(x) Integer<__COUNTER__> x
ou (ce qui semble être celui que vous voulez)
#define I(x) int x(__COUNTER__)
ce qui ne va pas avec '__LINE__' mentionné dans cette question? – kichik
@kichik le problème avec __LINE__ est qu'il est indiqué explicitement et selon CashCow il n'est pas nécessaire si une macro est utilisée. –
@robert ok Je vais mettre à jour mon Q –