https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66109
Bug ID: 66109 Summary: defining constexpr objects without initializer Product: gcc Version: 5.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vgheorgh at gmail dot com Target Milestone: --- The following code struct Foo { constexpr Foo() = default; }; int main() { constexpr Foo foo; } should not compile. Unfortunately it compiles with all g++ versions (that support c++11) up to and including 5.1 >From [decl.constexpr]: A constexpr specifier used in an object declaration declares the object as const. Such an object shall have literal type and shall be initialized. Therefore the correct way of usage should be constexpr Foo foo{};