Как сделать инициализацию скобки и значения по умолчанию работать вместе?

Следующий код работает

class A
{
public:
    int i;
    float f;
};


int main()
{
    A a{ 1, 0.1 };
    return 0;
}

Однако, если я добавлю значения по умолчанию для членов A, он не работает

class A
{
public:
    int i = 0;
    float f = 3.14;
};

Как заставить обе работать вместе?

Ответ 1

Вы должны определить значение по умолчанию и настраиваемый конструктор, например, пример ниже:

class A
{
public:
    A() {}  
    A(int const _i, float const _f) : i(_i), f(_f) {}
    int i = 0;
    float f = 3.14;
};

LIVE DEMO

Однако, как уже упоминалось в @Kerek SB, @TC в комментариях, это будет исправлено в С++ 14, и ваш код будет работать как есть.