[LLVMbugs] [Bug 17610] New: Clang requires a typedef when declaring and initializing a templated member variable
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Thu Oct 17 22:01:43 PDT 2013
http://llvm.org/bugs/show_bug.cgi?id=17610
Bug ID: 17610
Summary: Clang requires a typedef when declaring and
initializing a templated member variable
Product: clang
Version: 3.3
Hardware: Macintosh
OS: MacOS X
Status: NEW
Severity: normal
Priority: P
Component: C++11
Assignee: unassignedclangbugs at nondot.org
Reporter: mjbshaw at hotmail.com
CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
Classification: Unclassified
When using the Eigen library, I found a bug in the C++11 clang front-end, which
is visible in this minimal example:
template <typename T, int x, int y>
struct M;
template <>
struct M<float, 3, 3>
{
static M<float, 3, 3> bar()
{
return {};
}
};
typedef M<float, 3, 3> M3f;
struct Foo
{
//M<float, 3, 3> m = M3f::bar(); // Works
M<float, 3, 3> m = M<float, 3, 3>::bar(); // Does not work
};
int main() {}
I expected this to compile just fine, however, I get the following errors when
compiling:
$ clang++ -std=c++11 -stdlib=libc++ mat.cpp
mat.cpp:18:33: error: expected member name or ';' after declaration specifiers
M<float, 3, 3> m = M<float, 3, 3>::bar();
~~~~~~~~~~~~~~ ^
mat.cpp:18:32: error: expected ';' at end of declaration list
M<float, 3, 3> m = M<float, 3, 3>::bar();
^
;
mat.cpp:18:31: error: expected '>'
M<float, 3, 3> m = M<float, 3, 3>::bar();
^
3 errors generated.
This very same code compiles fine on GCC: http://ideone.com/ttadC1
If I use the typedef M3f (by uncommenting the line marked as "Works" and
commenting out the line marked as "Does not work"), then it compiles with no
warnings or issues.
My exact version of clang:
$ clang++ --version
Apple LLVM version 5.0 (clang-500.2.78) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.0
Thread model: posix
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20131018/1a7e2d48/attachment.html>
More information about the llvm-bugs
mailing list