typedef проверка типа? - PullRequest
       30

typedef проверка типа?

7 голосов
/ 23 февраля 2011

Как мне получить g ++ для проверки типов на typedefs?Является ли это возможным?то есть

typedef int T1;
typedef int T2;

T1 x = 5;     //Ok with me
T2 y = x;     //Any way to get an error or a warning here?

Я не могу использовать функции C ++ 0x (я не знаю, могут ли они это сделать).

РЕДАКТИРОВАТЬ: Я хочу что-то вроде этого:

typedef int BallID;
typedef int BatID;

BatID x = 10;
map<BatID, Bat*> m;
m.insert(make_pair(x, bigbat));        //OK
BallID y = 15;
m.insert(make_pair(y, smallbat));     //Give me a warning at least plz

Это слишком много, чтобы спросить?

Ответы [ 3 ]

8 голосов
/ 23 февраля 2011

Используйте сильный typedef: http://www.boost.org/doc/libs/release/boost/strong_typedef.hpp

2 голосов
/ 23 февраля 2011

Чтобы расширить ответ Наваза: когда вы typedef A B, тогда B - это просто псевдоним для A, а не отдельный тип.x и y - это просто int в вашем примере.

Если вы хотите создать новый тип, используйте одночастный struct.

1 голос
/ 23 февраля 2011

Пока T1 и T2 являются typedefs одного типа, вы не получите никакого предупреждения!

...