|
Boost Users : |
Subject: Re: [Boost-users] boost::bind and Motif
From: Richard (legalize+jeeves_at_[hidden])
Date: 2012-05-04 13:04:00
[Please do not mail me a copy of your followup]
boost-users_at_[hidden] spake the secret code
<1D97E025367AFB4A8C528590A3715BF442603B_at_archerysummit2.willamette.charteroaks> thusly:
>On Thursday, May 03, 2012 2:42 PM, Richard wrote:
>> boost-users_at_[hidden] spake the secret code
><1D97E025367AFB4A8C528590A3715BF442603A_at_archerysummit2.willamette.charte
>roaksystems.com> thusly:
>>
>>> static void Internal_callback (XtPointer self, XtIntervalId*)
>>> {
>>> reinterpret_cast <AppTimeout*> (self)->callback();
>>
>> I don't know why people always leap to reinterpret_cast<> as their
>> first choice; it's the most dangerous. I'd prefer static_cast<> here.
>
>In this case, the reinterpret_cast is needed because X11 specified that
>your callback *must* take a void pointer.
static_cast<T*>(p) where p is void* works perfectly fine. It is
always valid to cast a void* to any other type and that's what
static_cast<> does -- performs the cast when it is allowed by the
rules of the language.
You don't need reinterpret_cast<> here.
Did you try it with static_cast?
See "C++ Coding Standards" by Sutter and Alexandrescu, items:
92. Avoid using reinterpret_cast
95. Don't use C-style casts
-- "The Direct3D Graphics Pipeline" -- DirectX 9 version available for download <http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/> Legalize Adulthood! <http://legalizeadulthood.wordpress.com>
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net