Я хочу объявить свои собственные числовые типы, точно так же, как unsigned int, но я не хочу, чтобы типы были неявно преобразованы. Я попробовал это первым: typedef unsigned int firstID; typedef unsigned int secondID;
но это нехорошо, поскольку два типа являются просто синонимами для unsigned int, поэтому они свободно взаимозаменяемы.
Мне бы хотелось, чтобы это вызвало ошибку:
firstID fid = 0;
secondID sid = fid; // no implicit conversion error
но это будет хорошо:
firstID fid = 0;
secondID sid = static_cast<secondID>(fid); // no error
Моя причина в том, что аргументы функции строго типизированы, например:
void f( firstID, secondID ); // instead of void f(unsigned int, unsigned int)
Каков механизм, который я ищу?
Спасибо
Si