Size: a a a

2020 October 03

АР

Андрей Руссков... in pro.cxx
т.е. в некоторых сценариях бесполезная штука (
источник

АР

Андрей Руссков... in pro.cxx
Dmitry Sokolov
Ну если паковать в expected value or  error, то функция возвращающая expected может быть noexcept если конструктор expected noexcept.
и?
источник

DS

Dmitry Sokolov in pro.cxx
Чтобы вернуть ошибку надо сконструировать ошибку, а почти все исключения бросают в конструкторе, там где строку выделяют под сообщение.
источник

АР

Андрей Руссков... in pro.cxx
там вроде заранее выделенный буфер
источник

АР

Андрей Руссков... in pro.cxx
а, не, там сам объект исключения в случае throw выделяется в этом буфере
источник

АР

Андрей Руссков... in pro.cxx
текст да, надо выделять
источник

АР

Андрей Руссков... in pro.cxx
я кстати слабо представляю как можно обрабатывать OOM даже на ОС, которая не будет прибивать 9-кой.
источник

АР

Андрей Руссков... in pro.cxx
тебе получается надо обрабатывать каждое аллоцирующее место в коде, но при этом ты не можешь выделять память на обработку исключения
источник

АР

Андрей Руссков... in pro.cxx
интересно, а реально реализовать в компиляторе заблаговременное выделение памяти, которая потребуется для обработки bad_alloc?
источник

DS

Dmitry Sokolov in pro.cxx
Ну вот error_code получается такой более менее универсальный вариант для noexcept expected. С ограничениями конечно касательно информативности.
источник

DS

Dmitry Sokolov in pro.cxx
Кстати, относительно строк давно заметил, не хватает какого-то literal_view с гарантированным static storage duration. Очень удобно для всяких перегрузок понимать что память можно не выделять. Использую такой самодельный, очень удобно, типа req.headers.add(header::content_type, "application/json"_lv)
источник

DS

David Sorokin in pro.cxx
А можно ли отключить "small size optimization" для std::function на примере clang / gcc? Или это вшито в их ДНК?
источник

D

Dmitriy in pro.cxx
При вызове noexcept-функции из блоков try/catch компилятор сам уберет оверхеды?
источник

DF

Dollar Føølish in pro.cxx
мне кажется да, там лендинг пада не будет. Но попробуйте на годболте
источник

DF

Dollar Føølish in pro.cxx
оверхед же не при вызове а при выбросе/отлове
источник

AT

Alexander T in pro.cxx
Dmitry Sokolov
Кстати, относительно строк давно заметил, не хватает какого-то literal_view с гарантированным static storage duration. Очень удобно для всяких перегрузок понимать что память можно не выделять. Использую такой самодельный, очень удобно, типа req.headers.add(header::content_type, "application/json"_lv)
А string_view над строковым литералом разве не обладает нужными свойствами? Типа "hello"_sv, вроде живёт вечно и сохраняет семантику строки.
источник

DF

Dollar Føølish in pro.cxx
Так принимающая процедура не знает сколько он живёт по типу
источник

DF

Dollar Føølish in pro.cxx
Можно ньютайп сделать в принципе
источник

ПК

Побитый Кирпич... in pro.cxx
Dmitry Sokolov
Кстати, относительно строк давно заметил, не хватает какого-то literal_view с гарантированным static storage duration. Очень удобно для всяких перегрузок понимать что память можно не выделять. Использую такой самодельный, очень удобно, типа req.headers.add(header::content_type, "application/json"_lv)
Ага, а если надо динамически строку создать?
источник

DS

Dmitry Sokolov in pro.cxx
Побитый Кирпич
Ага, а если надо динамически строку создать?
Разное поведение для foo("aaa"sv) и foo("aaa"_lv). Внутри может быть sv + флаг какой-нибудь. Или sv + арена.
источник