При компиляции с -pedantic
генерируются следующие предупреждения:
source_file.cpp:3:18: warning: designated initializers are a C99 feature [-Wc99-extensions]
int a[6] = { [4] = 29, [2] = 15 };
^~~~~~~~
source_file.cpp:3:28: warning: designated initializers are a C99 feature [-Wc99-extensions]
int a[6] = { [4] = 29, [2] = 15 };
Понятно, что clang++
по умолчанию включает c99-extensions
.
Это не ошибка, так как компиляторы могут предоставить дополнительную функцию.clang++
разработчики просто решили оставить его включенным.Лучше использовать -pedantic
, если нам не нужны эти функции.
Интересно, что при поиске соответствующей информации я наткнулся на поддержку C ++ в Clang , где "Назначенные инициализаторы"перечислены как частично поддерживаемые через расширение для будущих предложений:
экспериментальная поддержка некоторых предлагаемых функций стандарта C ++ после C ++ 17, условно названного C ++ 2a
Это является точным предложением для предстоящего стандарта.Так что в будущем C ++ могут быть назначены инициализаторы.