Why are designated initializers not implemented in g++

I ran into this same problem today. g++ with -std=c++11 and c++14 does support designated initializers, but you can still get a compilation error “test.cxx:78:9: sorry, unimplemented: non-trivial designated initializers not supported” if you don’t initialize the struct in the order in which it’s members have been defined. As an example

struct x
{
    int a;
    int b;
};

// This is correct
struct x x_1 = {.a = 1, .b = 2};
// This will fail to compile with error non-trivial designated initializer
struct x x_2 = {.b = 1, .a = 2};

Leave a Comment