
Hi all, It is know that typedef in C++ is actually an alias, i.e. it doesn't create new distinguishable type. Sometimes this causes problems. Consider following example: typedef int handle; template < typename Value > void write( const Value &value ); void write< int >( const int &value ) { // do processing for int } void write< handle >( const handle &value ) { // we wanted to have separate processing for handle, // but we get only compilation error :( } In my projects I resolve such situations as the following: class handle_tag { }; typedef tagged< int, handle_tag > handle; Then everything works as expected. "tagged" class is actually a wrapper that mimics fundamental type behaviour. Also I have specialization for pointers. Is anyone interested in such solution of given problem? Is it worth to be part of Boost? Sincerely, Maksym Motornyy.