[LLVMbugs] [Bug 7934] New: user-defined conversion sequence wrongly considered ambiguous

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Aug 18 14:17:18 PDT 2010


http://llvm.org/bugs/show_bug.cgi?id=7934

           Summary: user-defined conversion sequence wrongly considered
                    ambiguous
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Keywords: compile-fail
          Severity: normal
          Priority: P
         Component: C++
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: nlewycky at google.com
                CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com


The following testcase fails to compile with clang:

  typedef unsigned char uint8;

  struct MutablePtr {
    MutablePtr() : ptr(NULL) {}
    void *ptr;

    operator void*() { return ptr; }
    operator uint8*() { return reinterpret_cast<uint8*>(ptr); }
    operator const char*() const { return reinterpret_cast<const char*>(ptr); }
  };

  void fake_memcpy(const void *);

  void use() {
    MutablePtr ptr;
    fake_memcpy(ptr);
  }

which claims that the choice of conversion operator is ambiguous. I disagree,
it should be choosing the void* choice which has a rank of exact match while
the other two are conversion rank.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list