Size: a a a

2020 August 13

ПК

Побитый Кирпич... in pro.cxx
Andrei K
Меня не надо этому учить, я это прекрасно понимаю. Я говорю о том, что с текущим стл, где нельзя даже файл открыть как стрим std::byte всё это становится резко не очень практично.
Ну стримы это уже гавнолегаси, на них походу забили, надо ждать новые штуки
источник

AK

Andrei K in pro.cxx
Побитый Кирпич
Функция send_bytes_to_server принимает что то типа span<byte>
Да, так и задумывалось. Но в конечном итоге, как я сказал всё равно std::memcpy принимает void*, write в сокет принимает const unsigned char*
источник

ПК

Побитый Кирпич... in pro.cxx
А вот как с байтами в std::net можно посмотреть
источник

ПК

Побитый Кирпич... in pro.cxx
Andrei K
Да, так и задумывалось. Но в конечном итоге, как я сказал всё равно std::memcpy принимает void*, write в сокет принимает const unsigned char*
Ну дак эти касты к низкоуровневой херне будут скрыты под норм абстракцией, неважно что там внутри
источник

AK

Andrei K in pro.cxx
Aidar Fattakhov
iostreams неюзабельны в любом виде
Это миссинг поинт. Мне не столь важен интерфейс iostream, сколько мне важно открывать файлы как байты. И иметь стримы байтов. Не оьязательно iostream, я про них вообще не упоминал.
источник

AF

Aidar Fattakhov in pro.cxx
Andrei K
Да, так и задумывалось. Но в конечном итоге, как я сказал всё равно std::memcpy принимает void*, write в сокет принимает const unsigned char*
Дык их реинтерпреькастить можно
источник

AF

Aidar Fattakhov in pro.cxx
Andrei K
Это миссинг поинт. Мне не столь важен интерфейс iostream, сколько мне важно открывать файлы как байты. И иметь стримы байтов. Не оьязательно iostream, я про них вообще не упоминал.
Ну считай в стд нет библиотеки для открытия файлов и вне стд тоже нет
источник

AF

Aidar Fattakhov in pro.cxx
Может быть какой-нибудь мапинг из буста только
источник

AF

Aidar Fattakhov in pro.cxx
То есть basic_streambuf кажется должны возвращать байты для байтовых потоков
источник

AK

Andrei K in pro.cxx
Я понимаю, что можно, но это не улучшает читаемость. У меня есть условно мой код, бизнес-логика, и есть условно апи для внешнего мира, так вот что в бизнес-логике, что на границе с внешним миром уже свои типы, которые никуда не денутся. Не понятно в какую часть пайплайна встраиваются std::byte
источник

AK

Andrei K in pro.cxx
Побитый Кирпич
А вот как с байтами в std::net можно посмотреть
Чекну, спасибо.
источник

AK

Andrei K in pro.cxx
А стоп, это ж просто asio
источник

AK

Andrei K in pro.cxx
Там есть свой  net::const_buffer, аналог span, который внутри таки void* имеет, а не byte* :(
источник

/dev/urandon ¯\_(ツ)_... in pro.cxx
Alexander Zaitsev
ну переписывать на микросервисы это никто не будет (и не надо). скорее похоже внутри на акторы немного, но это не акторы
Тогда будет весело передавать владение данных от одной компоненты к другой! Каждый мув-конструктор/ассайнмент должен будет уведомлять src и dst аллокатор (если данные созданы в куче)
источник

AK

Andrei K in pro.cxx
Aidar Fattakhov
Вкусовщина
Нет. Не вкусовщина. Хочется иметь максимально легковесные first-class контексты исполнения.
источник

AK

Andrei K in pro.cxx
И еще не хочется обмонаживать весь код await-абельностью.
источник

AK

Andrei K in pro.cxx
То есть если хочется монады на уровне языка — я только за, но не надо делать это исключительно для одной монады Awaitable
источник

AT

Anatoly Tomilov in pro.cxx
здесь это много раз обсуждалось, но всё-таки жесть какая https://stackoverflow.com/questions/63379066/is-using-malloc-for-int-undefined-behavior-until-c20. Даже для инта
источник

m

magras in pro.cxx
А это не UB менять объект через указатель на std::byte / char?

int x = 42;
std::byte* p = reinterpret_cast<std::byte*>(&x);
std::fill(p, p + sizeof(x), 0);
источник

AT

Anatoly Tomilov in pro.cxx
в вопросе выше — ответ, или я не прав?
источник