Isn't S a literal type?

Viewed 232

This code doesn't compile in Coliru, although it seems to comply with iso §5.19 p2 9th bullet point and iso §3.9 p10, i.e., S is a literal type and so, S a(1); should be considered a constant expression. In particular, iso §3.9 p10 bullet point 3 doesn't say anything about unitialized members.

#include <iostream>

struct S
{
    int i;
    float x;

    constexpr S(int j) : i{j} {}
};    

int main()
{
    constexpr S a(1);
}
1 Answers
Related