this->notes.
4.54K subscribers
29 photos
1 file
338 links
О разработке, архитектуре и C++.

Tags: #common, #cpp, #highload и другие можно найти поиском.
Задачки: #poll.
Мои публикации: #pub.
Автор и предложка: @vanyakhodor.
GitHub: dasfex.
Download Telegram
Вызывает ли этот код undefined behaviour?
Final Results
33%
Да.
67%
Нет.
#cpp #boost
Интересная библиотека. И ещё один из примеров использования CRTP(первым можно назвать std::enable_shared_from_this).
https://www.boost.org/doc/libs/1_67_0/libs/utility/operators.htm
this->notes.
#cpp #poll Предположим, имеем такой код: int x(1); new(&x) int(5); Вызывает ли этот код undefined behaviour? (можно пояснить свой ответ в комментариях 🙂 ) Ответ выложу завтра.
#cpp #stackoverflow

Ответ: нет.

Как и писали в комментариях, могут возникнуть вопросы при использовании объекта, переконструированного на стеке. Однако таких не будет.

Давайте рассмотрим случай not trivially destructible типа. При данном коде деструктор будет вызван лишь единожды, что может привести к утечкам памяти, если класс имеет своими полями некоторые указатели. Потому необходимо сделать явный вызов деструктора, после чего уже можно использовать placement new на это место.

Кто-то скажет, что использование объекта после вызова деструктора по стандарту является неопределённым поведением, но в данном случае мы используем не сам объект, а его storage.

Вот ссылка на вопрос с so, где сообщество поясняло мне за этот случай: https://stackoverflow.com/questions/69062579/is-using-placement-new-with-variable-on-the-stack-is-correct
Знание фактов выше позволяет удобно, красиво и единообразно писать операторы копирования/перемещения для ваших классов.
#cpp #proposals

Интересные proposals за последнее время:
1. Stacktrace for exceptions: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2370r1.html
2. basic_string::resize_and_overwrite: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1072r9.html
3. Conversions from ranges to containers: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1206r6.pdf
#cpp
Зачем нам нужен std::reduce?
https://blog.tartanllama.xyz/accumulate-vs-reduce/
Forwarded from Peltorator's Channel
Иногда так бывает, что асимптотика решения задачи зависит от количества делителей числа во входе. Когда я только начинал заниматься спортивным программированием, я несколько раз слышал такое утверждение: «количество делителей числа n — это примерно кубический корень из n». И с самого начала я относился к этому факту с подозрением: неужели у чисел может быть так много делителей?

На самом деле, это, конечно, не так, но оценка в кубический корень дает нужный порядок величин для грубых оценок на числах, с которыми мы имеем дело в реальной жизни (отличие не больше, чем в 4 раза при n ≤ 10^15, и не больше, чем в 10 раз при n ≤ 10^18). Давайте разберемся, сколько все таки на самом деле делителей у чисел, и как этим пользоваться, а также придумаем новую более точную оценку.

https://telegra.ph/Ocenka-na-kolichestvo-delitelej-chisla-09-10
#cpp
Множество различных(возможно в своём большинстве бесполезных) идиом C++.
https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms
#python #common
Метод, которым python решает проблемы с ромбовидным наследованием.
https://ru.wikipedia.org/wiki/C3-линеаризация
#cpp
На мой взгляд, очень нужная штука, которая была предложена ещё где-то в 2016.
https://en.cppreference.com/w/cpp/container/vector/erase2