https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63757

            Bug ID: 63757
           Summary: nullptr conversion sequence fails to compile
           Product: gcc
           Version: 4.9.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: R.HL at gmx dot net

This code

#include <cstddef>

void bar(void*) {}

struct foo
{
    operator std::nullptr_t()
    {
        return nullptr;
    }
};

int main()
{
    bar(foo());
}

Does not compile with GCC 4.9.1 (neither -std=c++11 nor =c++14). However, it
should; There is one user defined conversion sequence inherent, consisting of
one standard conversion sequence converting nullptr to nullptr_t (which is a
pointer conversion, specifically a null pointer conversion), one user defined
conversion through the conversion operator function and a second standard
conversion sequence converting nullptr_t to void* (Which is also a pointer
conversion).

Reply via email to