[LLVMbugs] [Bug 11067] New: constexpr and initialization of static data members in templates
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Wed Oct 5 03:38:39 PDT 2011
http://llvm.org/bugs/show_bug.cgi?id=11067
Summary: constexpr and initialization of static data members in
templates
Product: clang
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P
Component: C++0x
AssignedTo: unassignedclangbugs at nondot.org
ReportedBy: davidhunter22 at gmail.com
CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com
This may relate this bug report http://llvm.org/bugs/show_bug.cgi?id=4503
The C++11 standard seems to have had a few modification late in the process
related to the initialization of static data members of template classes. Some
discussion of this topic
http://stackoverflow.com/questions/4999241/mixing-use-of-constexpr-and-const,
http://patchwork.ozlabs.org/patch/113305/,
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3308.pdf
Anyway I was trying to build using a clang++ built from the trunk as of 140970
on a Linux box "2.6.31-23-server #75-Ubuntu SMP Fri Mar 18 19:23:09 UTC 2011
x86_64 GNU/Linux" in conjunction with trunk GCC 4.7.0 ( although the same issue
appears with 4.6.0 ). This led to errors from the GCC header files because of
constructs like this
template<typename T, T v> struct bar
{
static constexpr T value = v;
};
template<typename T, T v> constexpr T bar<T,v>::value;
which compiles fine with GCC itself but clang gives
constexpr.cpp:6:49: error: definition of initialized static data member 'value'
cannot be marked constexpr
template<typename T, T v> constexpr T bar<T,v>::value;
After reading about this for a while I still can't tell if this should be an
error or not. Anyway I believe someone out there is working on constexpr
related stuff and I wanted to make sure this issue was captured. It may be
clang is correct but that makes using clang with a recent GCC standard C++
library pretty impossible.
--
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