Я могу создать анонимный, инициализированный фигурной скобкой агрегат в C++?

В ситуациях, где, кажется, существует компромисс между связью и сцеплением, я, вероятно, спросил бы меня, "если бы кто-то еще уже записал эту логику, и я искал ошибку в нем, где я выглядел бы первым?", и запись код тот путь.

5
задан Shog9 20 October 2009 в 19:54
поделиться

3 ответа

Вы не можете использовать текущую версию C ++. Вы сможете в C ++ 0x - я все равно верю. Конечно, он все еще открыт для пересмотра - одно время я полагал, что вы сможете определять концепции в C ++ 0x, но этого больше нет ...

Изменить: ссылка будет [dcl.init] (§8.5 / 1) в N2960 . Наиболее важным битом является определение 'braced-init-list' в BNF (и последний бит текста, говорящий, что инициализация, описанная в этом разделе, может применяться / действительно применяется к возвращаемым значениям).

8
ответ дан 18 December 2019 в 13:16
поделиться

Not in C++. But you can in C99, using so-called compound literals:

struct S {
  int i, j;
};

struct S F()
{
  // Valid C99, invalid C++:
  return (struct S){ 52, 100 };
}

[C99: §6.5.2, 6.5.2.5]
[C++98: §5.2.3, 8.5, 12.1, 12.2]

Some C++ compilers provide this as an extension, but it's not legal ISO C++98. For example, g++ will accept this code by default, but if you compile with the -pedantic option, it will reject it.

5
ответ дан 18 December 2019 в 13:16
поделиться

Вы сможете использовать инициализацию скобок практически везде в C ++ 1x. (Хотя альфа Comeau 4.3.9 подавляется примером fnieto.)

1
ответ дан 18 December 2019 в 13:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: