
I was surprised that the following code compiled: #include <boost/function.hpp> int main(int argc, char argv[]) { typedef boost::function< void ( void ) > MyFunction; MyFunction test1 = char(); MyFunction test2 = 0; return 0; } Is there any reason why boost::function allows such conversions? Thanks, Sean

Sean Huang wrote:
Is there any reason why boost::function allows such conversions?
Boost.Function tries to behave as if it were a function pointer. And like all pointers, function pointers can be assigned an integral constant with the value 0, resulting in a null pointer. Thus, you can assign 0 and char() to a Boost.Function. Sebastian Redl

----- Original Message ----- From: "Sebastian Redl" <sebastian.redl@getdesigned.at> To: <boost-users@lists.boost.org> Sent: Wednesday, July 19, 2006 6:41 PM Subject: Re: [Boost-users] [function]unwanted conversion
Sean Huang wrote:
Is there any reason why boost::function allows such conversions?
Boost.Function tries to behave as if it were a function pointer. And like all pointers, function pointers can be assigned an integral constant with the value 0, resulting in a null pointer. Thus, you can assign 0 and char() to a Boost.Function.
Now I see as long as boost::function allows assignment (or copy construction) from a function pointer, this conversion is always valid. Thanks, Sean
participants (2)
-
Sean Huang
-
Sebastian Redl