
on Thu Nov 06 2008, Fernando Cacciola <fernando.cacciola-AT-gmail.com> wrote:
Hi Thorsten,
Hi Fernando,
Amoung our utilities we have
boost::polymorphic_cast boost::polymorphic_downcast
The latter only performs a check in debug builds, and can then be used whenever the cast must succeed.
Oh... I wasn't aware of _downcast.
boost::numeric_cast has no such alternative. Therefore I wuold like to see one. To keep in the naming convention from above, I think it could be reasonable to call this
boost::numeric_downcast
Furthermore, this should if possible be implemented in a seperate header (which is included in the main header) that can be compiled without exception-support. I think there are still platforms where they need this functionality, but don't want to sue exceptions.
Indeed.. it all makes sense.
Not to me. In what sense is this proposed cast "down?" The point of boost::polymorphic_downcast is that it can be used for casting down the inheritance hierarchy, to more-derived classes. It cannot, however, be used for cross-casts as polymorphic_cast can. boost::polymorphic_downcast is meant to be used where you think you really know what derived type you've got, and you want an assertion to reinforce your reasoning with a runtime check. I suppose you can have a similar situation for numeric types (e.g. "I know this long int should fit in a short int"). How about boost::checked_cast, or boost::checked_narrowing_cast or boost::narrow_cast? -- Dave Abrahams BoostPro Computing http://www.boostpro.com