вы можете использовать что-то вроде этого:
#define var(T,...) T<__VA_ARGS__,__LINE__>
или если ваш только делает это для одного знать тип:
#define var(x) T<(x),__LINE__>
Я предлагаю использовать __COUNTER__
вместо __LINE__
однако, это позволяет тип, который будет глобальным уникальным, а не только уникальным для линии.
EDIT: перечитайте вопрос, что именно вы подразумеваете под «другим целым числом»? как в другом типе или другом значении инициализации?
template<typename T = int, const T nValue> class Integer
{
T Value;
Integer() : Value(nValue)
{
}
operator T()
{
return Value;
}
};
#define VI(x) Integer<__COUNTER__> x
или (Это, кажется, один вы хотите)
#define I(x) int x(__COUNTER__)
, что случилось с `__LINE__` упоминается в этом вопросе? – kichik 2010-11-25 12:14:45
@kichik Проблема с __LINE__ заключается в том, что она явно указана и в соответствии с CashCow ей не нужно, если используется макрос. – 2010-11-25 12:15:52