Size: a a a

2020 September 21

АР

Андрей Руссков... in pro.cxx
либо как-то поверх это прикручивать
источник

m

magras in pro.cxx
Андрей Руссков
не, ты ключ конструируешь прям в ноде
Мы его сконструировали и вставили. Конструируем value часть ноды, летит исключение.

> If an exception is thrown by any operation, this function has no effect.

А мы уже могли изменить первый аргумент из которого сконструировали ключ.
источник

АР

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

m

magras in pro.cxx
Андрей Руссков
ну так в случае исключения удаляется нода и все, надо будет только чтобы она в процессе удаления была убрана из контейнера
Из первого аргумента мы уже помували в key. Это эффект который может наблюдать пользователь снаружи.
источник

АР

Андрей Руссков... in pro.cxx
не, no effect в данном случае это про состояние контейнера
источник

АР

Андрей Руссков... in pro.cxx
ты никак не сможешь гарантировать необходимое конструирование ключа без изменения его moved параметров
источник

m

magras in pro.cxx
Да, при конструировании pair будет та же проблема.
источник

АР

Андрей Руссков... in pro.cxx
вот что меня смущает так это возможный resize
источник

АР

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

АР

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

АР

Андрей Руссков... in pro.cxx
тогда, правда, вообще другие гарантии
источник

АР

Андрей Руссков... in pro.cxx
а хотя погоди. Если контейнеру надо расшириться, значит такого элемента в нем нет а значит Value для вставки все равно создавать
источник

P

PRoSToC0der in pro.cxx
Побитый Кирпич
*не кастить
бывают же случаи когда надо как-то хранить/передавать указатель на любую функцию и без шаблонов (какое-нибудь C API), я не предлагаю вызывать функцию по неверному типу указателя
источник

d

disba1ancer in pro.cxx
Побитый Кирпич
*не кастить
Иногда нужен какой-то общий тип для хранения указателей на функции, потому совсем без каста не обойтись
источник

S

Stas in pro.cxx
disba1ancer
Иногда нужен какой-то общий тип для хранения указателей на функции, потому совсем без каста не обойтись
std::function
источник

d

disba1ancer in pro.cxx
Stas
std::function
Оно будет работать только в плюсах
источник

d

disba1ancer in pro.cxx
Stas
std::function
Ты будешь возвращать его из dll?
источник

АР

Андрей Руссков... in pro.cxx
disba1ancer
Ты будешь возвращать его из dll?
кажется, возвращать std::function чуть лучше, чем структуру с указателем на callback, void* контекстом и указателем на функцию удаления контекста
источник

АР

Андрей Руссков... in pro.cxx
по кр мере в плюсах
источник

AT

Anatoly Tomilov in pro.cxx
в clang/gcc есть возможность добавить аннотацию к функции (произвольную строку), чтобы она печаталась рядом с именем функции в выводе gdb?
источник