В следующем фрагменте GCC 7 с режимом С++ 1z вызывает конструктор по умолчанию, но GCC/С++ 14 и Clang/С++ 14, С++ 1z вызывают конструктор списка инициализаторов.
Является ли это поведение затронутым изменением С++ 1z (возможно Гарантированное копирование текста?) или ошибка GCC?
#include <cstdio>
#include <initializer_list>
struct S {
S() { std::printf("DEF "); } // (1)
S(std::initializer_list<int> il) // (2)
{ std::printf("L=%zu ", il.size()); }
};
int main() {
S x({});
}
Вывод: