https://llvm.org/bugs/show_bug.cgi?id=27457
Bug ID: 27457 Summary: Possible regression: "invalid explicitly-specified argument" on enum value as template parameter Product: clang Version: 3.6 Hardware: PC OS: Linux Status: NEW Severity: normal Priority: P Component: C++ Assignee: unassignedclangb...@nondot.org Reporter: trpri...@synopsys.com CC: dgre...@apple.com, llvm-bugs@lists.llvm.org, sig-rnd-sat-clang-b...@synopsys.com Classification: Unclassified Some time prior to clang 3.6.2, clang accepted the following snippet, but now rejects it: $ cat t.cpp enum MyEnum { e }; class A {}; template <MyEnum> void foo(A) { } #ifndef HIDE template <int> void foo(int) { } #endif void bar() { foo<e>(A()); } $ Clang 3.5: $ clang-3.5 -v clang version 3.5.2 (tags/RELEASE_352/final) Target: x86_64-unknown-linux-gnu Thread model: posix Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6.3 Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6 Candidate multilib: .;@m64 Candidate multilib: 32;@m32 Selected multilib: .;@m64 $ clang-3.5 -c t.cpp $ Clang 3.6: $ clang-3.6 -v clang version 3.6.2 (tags/RELEASE_362/final) Target: x86_64-unknown-linux-gnu Thread model: posix Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6.3 Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6 Candidate multilib: .;@m64 Candidate multilib: 32;@m32 Selected multilib: .;@m64 $ clang-3.6 -c t.cpp t.cpp:7:14: error: no matching function for call to 'foo' void bar() { foo<e>(A()); } ^~~~~~ t.cpp:5:21: note: candidate function [with $0 = 0] not viable: no known conversion from 'A' to 'int' for 1st argument template <int> void foo(int) { } ^ t.cpp:3:24: note: candidate template ignored: invalid explicitly-specified argument for 1st template parameter template <MyEnum> void foo(A) { } ^ 1 error generated. $ When the second template is omitted, both clang versions accept the snippet: $ clang-3.5 -DHIDE -c t.cpp $ clang-3.6 -DHIDE -c t.cpp $ I can reproduce this with a recent svn build as well. -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs