[Bug c++/65579] New: [C++11] gcc requires definition of a static constexpr member even though it is not odr-used
kariya_mitsuru at hotmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Mar 26 10:35:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65579
Bug ID: 65579
Summary: [C++11] gcc requires definition of a static constexpr
member even though it is not odr-used
Product: gcc
Version: 5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: kariya_mitsuru at hotmail dot com
Created attachment 35143
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35143&action=edit
g++ -v
The sample code below should be compiled and linked successfully but it causes
a linkage error.
============== sample code ==============
template <typename>
struct S {
int i;
};
struct T {
static constexpr S<int> s{1};
};
int main()
{
return T::s.i;
}
============== sample code ==============
cf. http://melpon.org/wandbox/permlink/JFgGdscpiHVEJpdb
I think that the T::s is not odr-used.
Note that it is compiled and linked successfully if S is not a template.
============== sample code ==============
struct S {
int i;
};
struct T {
static constexpr S s{1};
};
int main()
{
return T::s.i;
}
============== sample code ==============
cf. http://melpon.org/wandbox/permlink/bvH2k7pW8WQSXQmN
More information about the Gcc-bugs
mailing list