Обновить
0

Пользователь

Отправить сообщение

Кто говорит про переписывать? Я же сказал, "эпохи". Возможность помечать новый код какими-то маркерами, которые отключают старое кривое поведение.

Аж залогинился чтобы написать ответ. Кризис стандартизации есть, но он совсем не в этом.

Кому вообще нужна эта графика в стандарте? Даже если что-то стандартизуют, то максимум это будет примитивная 2D-графика. Кому она нужна? Студентам для лабораторных? Кто будет использовать ее в продакшене вместо проверенных годами SDL и прочих?

И кто будет ее реализовать? Разработчики стандартных библиотек в этом не разбираются, а тут придется делать аж три копии одной и той же библиотеки, по одной на каждый крупный компилятор. И в каждой будут какие-то свои баги и проблемы, которые потом никогда не исправят, потому что ABI.

Зачем все это? "Фрагментация сообщества" звучит слабовато. Даже если это как-то пропихнут, будет как в https://xkcd.com/927/, добавится еще один (а точнее три!) варианта, а старые никуда не исчезнут. И новые библиотеки будут хуже, чем тот же SDL, поэтому кто их будет использовать?

Настоящий кризис стандартизации в том, что комитет не хочет ломать ABI и добавлять эпохи, поэтому костыли в языке остаются навечно. И в том, что нарисовался Rust и мода на безопасность, а комитет не может толком ничего этому противопоставить.

В 0x4 начиная с C++20 не нужен std::cin.width(), все работает само: https://en.cppreference.com/w/cpp/io/basic_istream/operator_gtgt2

В 0x8, мне кажется, любой нормальный человек использовал бы wait_for, принимающий лямбду с условием, хотя это и не "одно слово".

В 0xC __end - зарезервированное имя, http://eel.is/c++draft/lex#name-3

Я вижу только дополнительный static_assert() и защиту от неправильного использования.


Но я не могу придумать пример, когда (T &&)value не сработало бы как идеальная передача, если T — тип универсальной ссылки, выбранный компилятором автоматически. Можете привести такой пример?

Все-таки ((Types&&)args...) — это тоже идеальная передача, и работает это так же, как std::forward().

Сработает, потому что это не std::initializer_list.


В обычной инициализации структур используется тот же синтаксис и никаких проблем не возникает, хотя типы разные. (Это было еще в С.)


struct S {int a; const char *b;};
S s = {1, "2"};

Я очень надеюсь, что это был сарказм и намек на неточную формулировку текста на слайде...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность