а то народ начал за всякую фигню голосовать
черт
лямбды приняли в 11 и сейчас по чуть чуть совершенствуют
почему не принять сеть
и уже потом ее улучшать
int f(bool b) {
unsigned char c;
unsigned char d = c; // OK, d has an indeterminate valueint e = d; // undefined behaviorreturn b ? d : 0; // undefined behavior if b is true
}
Я правильно понимаю, что речь идёт про N4771 ?
Он у меня вызывает вопросы после беглого просмотра.
Зачем там Buffers? Почему вместо Buffers нельзя использовать произвольный контейнер?
Вот такое перечисление выглядит подозрительно:
Почему набор контейнеров ограничен только этим перечислением (data[N], std::array, std::vector, basic_string и basic_string_view)?
R>а то народ начал за всякую фигню голосовать R>черт R>лямбды приняли в 11 и сейчас по чуть чуть совершенствуют R>почему не принять сеть R>и уже потом ее улучшать
С лямбдами было заранее понятно, что у как будут менять, а тут —
У меня такое впечатление из-за Buffers, что вся библиотека завязана на паткетную обработку.
я не могу отвечать за автора
могу ответить за себя, вызвано практическим использованием
перефразировав вопрос, можно спросить — а почему там не любой тип данных ?
убив тем самым не только зайца но и все живое
если же немного присмотреться то можно заметить что там только контигиус контейнеры
и например деквая нет
если с лямбдами было все понятно
почему сразу не сделали их темплейт, не разрешили авто, алиясинг и в конце концов сразу не сделать их констрекспр ?
я не знаю, но мне кажется проблема принятия нетворкинга в стандарт
из за того что он напрямую связан с екзекуторами
а свои взгляды пытаются пропихнуть в стандарт и фб и нвидия и...
в конце концов есть там умные дядьки, пусть ищут выход
Здравствуйте, reversecode, Вы писали:
R>я не могу отвечать за автора R>могу ответить за себя, вызвано практическим использованием
Что это значит "практическим использованием"?
Это?:
16.2.1 Mutable buffer sequence requirements [buffer.reqmts.mutablebuffersequence]
1 A mutable buffer sequence represents a set of memory regions that may be used to receive the output of an
operation, such as the receive operation of a socket.
Мне странно видеть такое требование в библиотеке стандарта. Что значит "as the receive operation of a socket"?
R>перефразировав вопрос, можно спросить — а почему там не любой тип данных ?
Вот, кстати, правильный вопрос!
Что будет, если вот сюда:
template<class T, class Allocator>
mutable_buffer buffer(vector<T, Allocator>& data) noexcept;
В качестве T подставить, например, std::string ? Т.е. передать в качестве аргумента data типа std::vector<std::string>? Это ведь sequence represents a set of memory regions. Так?
R>убив тем самым не только зайца но и все живое
ой.
А есть пример кода, чтобы посмотреть как это предпологается использовать?
R>если с лямбдами было все понятно R>почему сразу не сделали их темплейт, не разрешили авто, алиясинг и в конце концов сразу не сделать их констрекспр ?
Когда понятно, что делать и как, тогда ясно, в какой последовательности всё можно писать, чтобы не сломать обратной совместимости.
намекаете на о что в стандарте не расшифрован термин операция на сокете ?
если да, то я и не агитирую за то что бы пропозл по сети приняли ас ис
да и не думаю что проблема с пропозлом именно в этом
я агитирую что бы над ним поработали так что бы сеть появилась уже в С++20
а не в каком то С++23, лет через 10 в лучшем случае
в худшем в С++2x через 20+ лет
примеры чего, как использовать буфер ?
в асио/буст-асио есть полно, а так же в нетфоркинг ТС репы криса
BFE> int f(bool b) {
BFE> unsigned char c;
BFE> unsigned char d = c; // OK, d has an indeterminate value
BFE> int e = d; // undefined behavior
BFE> return b ? d : 0; // undefined behavior if b is true
BFE> }
BFE>
Ну, Reflection просто уже вопиюще нужен, зае**** своим метапрограммированием. Главное ж ведь никаких перепон чтобы сделать ещё лет 7 назад нет, а всё обсасывают и обсасывают, и никак не насосутся.
А вот "Compile-time programming 105" — это что такое? Дальнейшее добавление кейвордов по типу constexpr? Если так — то это
Вместо требований, чтобы компилер до дефолту выполнял код в компил-тайме когда это возможно — заставлять людей делать работу за него
One of the features of C++20 is a new way to print and format text through std::format. This is a library based on the {fmt} library by Victor Zverovich.
Помню красноглазики плевались, что удобный интерфейс {fmt} не может покрывать потребности пользователей — надо наваять что-то ультра монстроузное!!!111
А в итоге
Здравствуйте, AeroSun, Вы писали:
AS>А вот "Compile-time programming 105" — это что такое? Дальнейшее добавление кейвордов по типу constexpr? Если так — то это
Ахахаха:
Новое ключевое слово constinit для гарантированной инициализации на этапе компиляции
А потом, лет через 10, опять "нам нужны костыли, чтобы подпереть созданные нами костыли, ведь у нас обратная совместимость".
Ровно то же самое, что и с передачей по умолчанию копии вместо константной ссылки в параметрах. И все остальные далее навечно страдают.
Задница вместо мозга работает.
О, вот и подтверждение:
+ Обсуждался новый спецификатор исключений throws.
+ Соответственно теперь в классе может быть несколько деструкторов
+ новый вид потока (наконец-то начало доходить, что тот что приняли не катит в реальных задачах сложнее hello-world, но опять же полумера, так что следует ждать ещё не один новый вид потока в дальнейшем)
И вишенка:
[nodiscard]] теперь можно навешивать на конструкторы и целые классы
И повторяется история с constexpr — теперь [nodiscard]] будет везде.
Вместо требований к error/warning для компилятора и [maybe_unused]] теперь надо будет прописывать вручную... мы сказали вручную, твари!