конструктор — C ++ struct открытая конструкция члена, использующая именованный список десигаторов?

Следующий код прекрасно компилируется в g++,

#include <iostream>
#include <string>
using namespace std;

struct thing
{
int a;
char b;
string name;
};

int main()
{
thing t =
{
a : 23,
b : 'e',
name : "Hello"};

cout << t.a << endl;
cout << t.b << endl;
cout << t.name << endl;

return 0;
}

Я знаю, что эквивалент C99 { .a = 23, .b = 'e', .name = "Hello" } не поддерживается в C ++, но почему поддерживается выше? Это стандартизировано? Как называется этот конструктор идиома?

Чтобы представить вышесказанное в перспективе, если у вас есть система с множеством неизменяемых классов, используемых для поточно-ориентированного обмена сообщениями (все const а также public членов), тогда гораздо проще создать экземпляр такого класса, используя именованные члены, чем писать конструктор и использовать позиционные аргументы.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]