Size: a a a

2021 February 08

AT

Anatoly Tomilov in pro.cxx
Dmitriy
Все контейнеры?
здесь можно аллокатор свой сделать, который бы позволял сообщать о неудаче
источник

D

Dmitriy in pro.cxx
Anatoly Tomilov
здесь можно аллокатор свой сделать, который бы позволял сообщать о неудаче
И как же?
источник

D

Dmitriy in pro.cxx
Контейнер ожидает валидный указатель. Всегда!
источник

АК

Александр Караев... in pro.cxx
Anatoly Tomilov
здесь можно аллокатор свой сделать, который бы позволял сообщать о неудаче
нельзя, реализация контейнеров внутри завязана на инварианты различных операций
источник

AT

Anatoly Tomilov in pro.cxx
в Allocator::allocate флаг somethingGoingWrong в true выставлять и проверять после каждого push_back)
источник

D

Dmitriy in pro.cxx
Anatoly Tomilov
какие части STL не удастся использовать, если сделать -fno-exceptions? В их числе std::make_unique (легко заменить на свою обёртку с new (std::nothrow)), std::sto* (<charconv>). Что ещё?
В связи с чем появилось такое требование?
источник

AT

Anatoly Tomilov in pro.cxx
Александр Караев
нельзя, реализация контейнеров внутри завязана на инварианты различных операций
действительно
источник

АК

Александр Караев... in pro.cxx
Anatoly Tomilov
в Allocator::allocate флаг somethingGoingWrong в true выставлять и проверять после каждого push_back)
но об этом не будет знать контейнер :(
источник

AT

Anatoly Tomilov in pro.cxx
Dmitriy
В связи с чем появилось такое требование?
оно свыше. Пока не имеет смысла, кажется
источник

ПК

Побитый Кирпич... in pro.cxx
Anatoly Tomilov
в Allocator::allocate флаг somethingGoingWrong в true выставлять и проверять после каждого push_back)
После push_back у тебя уже сломан мир будет
источник

AT

Anatoly Tomilov in pro.cxx
Побитый Кирпич
После push_back у тебя уже сломан мир будет
уже уяснил
источник

МК

Мгер Карапетян... in pro.cxx
подскажите где можно подробно прочитать про атрибуты в си? желательно на русском
FileInfo *PROCESSES attribute((section ("shared"), shared)) = NULL;
unsigned int CNT_PROC attribute((section ("shared"), shared)) = 0;
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Мгер Карапетян
подскажите где можно подробно прочитать про атрибуты в си? желательно на русском
FileInfo *PROCESSES attribute((section ("shared"), shared)) = NULL;
unsigned int CNT_PROC attribute((section ("shared"), shared)) = 0;
В доке компилятора
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Атрибутов много, вопрос общий или конкретный?
источник

МК

Мгер Карапетян... in pro.cxx
я хотел прочитать в целом про тему. Но нужно изучить конкретно про shared
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
источник

МК

Мгер Карапетян... in pro.cxx
читал... нет серьезных примеров... например ограничения shared — windows NT, а есть что либо подобное на линукс?
источник

D

Dmitriy in pro.cxx
Пусть есть
template<class Callback, class... Types>
void process_data(Callback c, const Types&... args) { ... }

При вызовах вида process_data([](...){...}) - т.е. от лямбды - в бинаре вижу нечто вида
...
call rax;
...

Даже при включенных оптимизациях.
Понимая, что немного оффтопик, сформулирую вопрос так: какие у компилятора могут быть основания не подставлять тело лямбды?
Никаких вызовов по указателю внутри самой лямбды нет.
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Dmitriy
Пусть есть
template<class Callback, class... Types>
void process_data(Callback c, const Types&... args) { ... }

При вызовах вида process_data([](...){...}) - т.е. от лямбды - в бинаре вижу нечто вида
...
call rax;
...

Даже при включенных оптимизациях.
Понимая, что немного оффтопик, сформулирую вопрос так: какие у компилятора могут быть основания не подставлять тело лямбды?
Никаких вызовов по указателю внутри самой лямбды нет.
Сколько в ней строк?
источник

АК

Александр Караев... in pro.cxx
Dmitriy
Пусть есть
template<class Callback, class... Types>
void process_data(Callback c, const Types&... args) { ... }

При вызовах вида process_data([](...){...}) - т.е. от лямбды - в бинаре вижу нечто вида
...
call rax;
...

Даже при включенных оптимизациях.
Понимая, что немного оффтопик, сформулирую вопрос так: какие у компилятора могут быть основания не подставлять тело лямбды?
Никаких вызовов по указателю внутри самой лямбды нет.
он решает не инлайнить, вот и всё
источник