[LLVMbugs] [Bug 12931] New: incorrect overload resolution
    bugzilla-daemon at llvm.org 
    bugzilla-daemon at llvm.org
       
    Wed May 23 19:04:02 PDT 2012
    
    
  
http://llvm.org/bugs/show_bug.cgi?id=12931
             Bug #: 12931
           Summary: incorrect overload resolution
           Product: clang
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: C++
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: roman at binarylife.net
                CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
    Classification: Unclassified
The compiler should instantiate doit(junk ...) in the test below.
$ cat test.C
struct junk {
  template<typename X>
  junk(X const volatile&);
};
template<typename X>
struct tester {
  static void doit(junk ...);
  static void doit(X,int);
};
enum enum_type { ev };
void foo(enum_type& enum_value) {
  tester<int const volatile&>::doit(enum_value,0);
}
$ clang++ -c test.C
test.C:15:37: error: volatile lvalue reference to type 'const volatile int'
cannot bind to a value of unrelated type 'enum_type'
  tester<int const volatile&>::doit(enum_value,0);
                                    ^~~~~~~~~~
test.C:9:21: note: passing argument to parameter here
  static void doit(X,int);
                    ^
1 error generated.
$ clang++ --version
clang version 3.1 (branches/release_31 157338)
Target: x86_64-unknown-linux-gnu
Thread model: posix
-- 
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