http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57869

            Bug ID: 57869
           Summary: [C++11] Casting a object pointer to a function pointer
                    should not warn about a forbidden conversion
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: daniel.kruegler at googlemail dot com

gcc 4.9.0 20130616 (experimental) diagnoses a warning for the following code
compiled with the flags:

-Wall -pedantic -std=c++11

//-------------------------------------
void* po = 0;
void (*pf)() = reinterpret_cast<decltype(pf)>(po); // #2
static_assert(sizeof(po) >= sizeof(pf), "Conversion not supported");
//-------------------------------------

"main.cpp|2|warning: ISO C++ forbids casting between pointer-to-function and
pointer-to-object [enabled by default]"

Given that 5.2.10 p8 says:

"Converting a function pointer to an object pointer type or vice versa is
conditionally-supported."

and since to my knowledge gcc supports such conversions (without that ::dlopen
wouldn't work), the warning should be removed in the context of C++11.

Reply via email to