Реализация идеомы UniqueType
От: rs4i  
Дата: 27.06.09 05:25
Оценка:
Идея проста и стоит во главе идеологии C++:
std::string password, login;
unsigned short TCPport, YearOfBirth;

Компилятор запрещает бессмысленные присвоения:
login = TCPport; // error

Однако не менее бессмысленные:
TCPport = YearOfBirth; // ok

запретить не может.
Писать класс для каждого подобного типа не реально.
Возникла идея написать шаблон прокси класса:
template< class ContainType >class UniqueType{
  ContainType v;
public:
  UniqueType( ContainType c ): v( c ){}
  operator ContainType(){ return v; }
  // При необходимости перегружаем еще что-нибудь.
};

Вопрос: как обеспечить уникальность типа?
Хочется чтоб выглядело приблизительно так:
UniqueType< std::string > password = "******"; // уникальный тип
UniqueType< std::string > login = "rs4i"; // уникальный тип
password = login; // error
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.