From: Sergey Shandar (sergey_at_[hidden])
Date: 2007-11-07 01:55:17


Hello all

I have my own C++ framework (http://cbear.berlios.de, SVN:
http://tools.assembla.com/svn/cbear/trunk/) which has some useful (IMHO)
libraries. One of this library is "cast" library
(http://tools.assembla.com/cbear/browser/trunk/cbear.berlios.de/cast)
which allows you to convert objects without specifying a type:

char c;
int i;
...
// if(c == static_cast<char>(i))
if(c == cast::static_::value(i))
{
...
}

It is useful when you want to convert an object to a type of another
object. And this is also more safe, compare to standard casting, for
example in previous code someone can change the type of c to wchar_t,
and if you use static_cast, the compiler will not even warn you about
incorrect casting. So, you have to manually check all the code.

Currently there are several castings: static, reinterpret, const,
dynamic, polymorphic (based on Boost.polymorphic_cast), polymorphic_down
(based on Boost.polymorphic_downcast), explicit (calls an explicit
constructor), safe_reinterpret (compare sizes of converting types),
default (returns an object created by default constructor).

Thank you.

Best regards, Sergey Shandar.