Size: a a a

2020 August 20

d

d7d1cd in pro.cxx
Компилятор говорит "Auto type specifier is not supported on functions without trailing return type."
источник

AT

Anatoly Tomilov in pro.cxx
d7d1cd
Компилятор говорит "Auto type specifier is not supported on functions without trailing return type."
значит компилятор не поддерживает initializer_list скорей всего
источник

AT

Anatoly Tomilov in pro.cxx
а не. удали эту строку
источник

AT

Anatoly Tomilov in pro.cxx
это просто дефект в компиляторе
источник

AT

Anatoly Tomilov in pro.cxx
нужен синтаксис auto y = {A{}, {}, };
источник

d

d7d1cd in pro.cxx
Удалил ту строку. Теперь ошибка на следующей: "Auto type is not supported for brace list initialization."
источник

ПК

Побитый Кирпич... in pro.cxx
Anatoly Tomilov
тогда где UB? Из-за нарушения Стандарта какого-то конкретного компилятора?
It is undefined behavior to add declarations or definitions to namespace std or to any namespace nested within std, with a few exceptions noted below

Добавление initializer_list не подпадает под эти исключения, значит UB
источник

ПК

Побитый Кирпич... in pro.cxx
Всё просто
источник

AT

Anatoly Tomilov in pro.cxx
теперь наверняка можно заключить, что компилятор не поддерживает
источник

CD

Constantine Drozdov in pro.cxx
Anatoly Tomilov
тогда где UB? Из-за нарушения Стандарта какого-то конкретного компилятора?
нет, язык просто не разрешает тебе так делать
компилятор тебе не разрешает так делать
источник

CD

Constantine Drozdov in pro.cxx
причем язык явно запрещает, а компилятор не документирует последствия, потому что зачем
источник

AT

Anatoly Tomilov in pro.cxx
Побитый Кирпич
It is undefined behavior to add declarations or definitions to namespace std or to any namespace nested within std, with a few exceptions noted below

Добавление initializer_list не подпадает под эти исключения, значит UB
представь, что он скопировал из какой-то более свежей версии стандартной библиотеки это определение и поместил его туда-где-хедер-должен-лежать. Назвал её libmyc++ (мысленно) и стал/продолжил считать/верить, что она - стандартная библиотека. И начал использовать. Какое здесь UB?
источник

d

d7d1cd in pro.cxx
d7d1cd
Удалил ту строку. Теперь ошибка на следующей: "Auto type is not supported for brace list initialization."
Скажите, эта ошибка точно говорит, что компилятор не умеет в initializer_list?
источник

ПК

Побитый Кирпич... in pro.cxx
Anatoly Tomilov
представь, что он скопировал из какой-то более свежей версии стандартной библиотеки это определение и поместил его туда-где-хедер-должен-лежать. Назвал её libmyc++ (мысленно) и стал/продолжил считать/верить, что она - стандартная библиотека. И начал использовать. Какое здесь UB?
> Какое здесь UB

Здесь UB потому что так делать явно запрещено по стандарту. Ты должен доказывать, что это разрешено, а не я, что запрещено
источник

ПК

Побитый Кирпич... in pro.cxx
На все твои "представь" я просто говорю что это UB и может работать, но UB не перестаёт быть
источник

AT

Anatoly Tomilov in pro.cxx
Побитый Кирпич
> Какое здесь UB

Здесь UB потому что так делать явно запрещено по стандарту. Ты должен доказывать, что это разрешено, а не я, что запрещено
не понял. По стандарту запрещено, что я для G++ взял и написал свою собственную стандартную библиотеку? В стандарте вообще есть такое слово gcc? Как-то слабо верится. Как такое в стандарте может быть запрещено вообще?
источник

ПК

Побитый Кирпич... in pro.cxx
Иначе так можно добавить любое имя в std, ведь возможно в C++32 там оно появится и "поместить его туда-где-хедер-должен-лежать". Но это абсурд, значит и initializer_list нельзя так бекпортить
источник

AT

Anatoly Tomilov in pro.cxx
Побитый Кирпич
На все твои "представь" я просто говорю что это UB и может работать, но UB не перестаёт быть
во-первых есть определение, что такое UB. То, что я предлагаю, вообще стандартом не регулируется
источник

AT

Anatoly Tomilov in pro.cxx
Побитый Кирпич
Иначе так можно добавить любое имя в std, ведь возможно в C++32 там оно появится и "поместить его туда-где-хедер-должен-лежать". Но это абсурд, значит и initializer_list нельзя так бекпортить
Вот здесь-то мы и расходимся. Это не абсурд.
источник

ПК

Побитый Кирпич... in pro.cxx
Anatoly Tomilov
во-первых есть определение, что такое UB. То, что я предлагаю, вообще стандартом не регулируется
Дак я тебе кинул цитату с подтверждением  что это UB
источник