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{};

Reply via email to