четверг, 25 ноября 2010 г.

strong typedef

Известно, что typedef не создает новый тип, а просто вводит алиас для существующего типа. Т.е., например, объявив
typedef int myint_t;
нельзя перегрузить функцию для myint_t, так как типы неразличимы для компилятора:
void f( int );
void f( myint_t ); // error
Если мы хотим эти типы различать, то решение состоит в том, чтобы создать структуру myint_t вместо typedef и перегрузить все необходимые операции, а также оператор приведения типа. В библиотеке Boost уже есть обертка для такой задачи — strong_typedef, что избавляет от необходимости писать её самим.

Комментировать в ВКонтакте