Size: a a a

2020 August 11

AT

Andrew Titov in pro.cxx
magras
Оператор [] для map и есть обертка над insert: https://eel.is/c++draft/map#access
try_emplace не конструирует объект, если ключ уже был вставлен.
источник

AS

Artur Solovev in pro.cxx
Слушай, классный опыт.
источник

d

d7d1cd in pro.cxx
magras
Оператор [] для map и есть обертка над insert: https://eel.is/c++draft/map#access
Это да, только во всех реализациях stl сначала проверяется, есть ли элемент в мапе и только если его нет, создаётся. У меня же сначала создаётся и только потом проверяется, есть ли.
источник

d

d7d1cd in pro.cxx
Andrew Titov
try_emplace не конструирует объект, если ключ уже был вставлен.
emplace нет в моей stl в принципе. В ней реализована только часть c11 стандарта
источник

AS

Artur Solovev in pro.cxx
А у тебя есть сырцы платформенной libstdcxx?
источник

d

d7d1cd in pro.cxx
Artur Solovev
А у тебя есть сырцы платформенной libstdcxx?
Нет
источник

AS

Artur Solovev in pro.cxx
Эх, жаль. Можно на старте местным аналогом ld_preload загрузить либу, хукающую это место, но имхо не стоит того.
источник

m

magras in pro.cxx
Да, я неправ 11 стандарт:

T& operator[](const key_type& x);
Effects: If there is no key equivalent to x in the map, inserts value_type(x, T()) into the map.
Requires: key_type shall be CopyConstructible and mapped_type shall be DefaultConstructible.
Returns: A reference to the mapped_type corresponding to x in *this.
Complexity: logarithmic.
источник

SK

Stas Koynov in pro.cxx
https://en.cppreference.com/w/cpp/types/offsetof написано не может быть реализован в стандартном C++ и требует поддержки компилятора, а как определить смещение стандартными средствами?
источник

ПК

Побитый Кирпич... in pro.cxx
Artur Solovev
Эх, жаль. Можно на старте местным аналогом ld_preload загрузить либу, хукающую это место, но имхо не стоит того.
щас бы header only либу хукать
источник

SK

Stas Koynov in pro.cxx
Stas Koynov
https://en.cppreference.com/w/cpp/types/offsetof написано не может быть реализован в стандартном C++ и требует поддержки компилятора, а как определить смещение стандартными средствами?
или забить, ибо все норм компиляторы поддерживают
источник

ПК

Побитый Кирпич... in pro.cxx
Stas Koynov
https://en.cppreference.com/w/cpp/types/offsetof написано не может быть реализован в стандартном C++ и требует поддержки компилятора, а как определить смещение стандартными средствами?
offsetof это стандартный способ
источник

AS

Artur Solovev in pro.cxx
Лично я не вижу в этом проблемы. Ну разве что она ещё и шаблонная, и придется как-то перечислять символы, чтобы не пропустить ни одной параметризации, но техника алекватная.
источник

AS

Artur Solovev in pro.cxx
Переслано от Побитый Кирпич...
щас бы header only либу хукать
источник

ПК

Побитый Кирпич... in pro.cxx
Artur Solovev
Переслано от Побитый Кирпич
щас бы header only либу хукать
Нажимай "Ответить", а не "Переслать"
источник

К

Константин in pro.cxx
Что значит хукать?
источник

ПК

Побитый Кирпич... in pro.cxx
Artur Solovev
Лично я не вижу в этом проблемы. Ну разве что она ещё и шаблонная, и придется как-то перечислять символы, чтобы не пропустить ни одной параметризации, но техника алекватная.
Шаблонные функции инлайнятся обычно, так что никаких символов не будет
источник

AS

Artur Solovev in pro.cxx
Ну не знаю, g++ в debug и relwithdebinfo точно std::map не инлайнит, я отлаживал gdb без проблем.
источник

OS

Oleksandr Senkovych in pro.cxx
Artur Solovev
Ну не знаю, g++ в debug и relwithdebinfo точно std::map не инлайнит, я отлаживал gdb без проблем.
dwarf инфо может говорить что начало фрейма находится на такой-то инструкции, соответственно даже если там нет call дебаггер будет показывать нормальный трейс
источник

AS

Artur Solovev in pro.cxx
Хм, надо будет попробовать вызвать использующийся в коде std::map..::size(), проверить.
источник