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

Tags: #common, #cpp, #highload и другие можно найти поиском.
Задачки: #poll.
Мои публикации: #pub.
Автор и предложка: @vanyakhodor.
GitHub: dasfex.
Download Telegram
#common
1. Немного про проектирование.
https://habr.com/ru/post/276593/

2. Good and bad technical debt.
https://blog.crisp.se/2013/10/11/henrikkniberg/good-and-bad-technical-debt

3. О микросервисах.
https://habr.com/ru/post/249183/

С Наступающим!)
👍1
#common
The absolute minimum every software absolutely positively must know about unicode and character sets no excuses.
https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/
👍1
#poll
Использование variadic templates очевидно облегчает жизнь программистам. Однако бывают совсем экзотические свёртки с их участием. Давайте посмотрим на одну такую.

Имеем бинарное дерево на 1й картинке. И мы хотим заставить работать код на второй картинке. left/right -- указатели на члены класса(предлагаю объявить самим). Нужно написать функцию tree_get с помощью variadic templates(помним, что это C++17). Пишется она буквально в пару строк. В случае некорректного пути к несуществующей ноде можно падать. Тут есть код, который может вам пригодиться.

Как обычно, если никто не пробьёт за пару дней, то выложу ответ. Иначе ищите в комментариях.
👍2
#cpp
Simplify template code with fewer typename in C++20
https://www.cppstories.com/2022/less-typename-cpp20/
👍1
this->notes.
#poll Использование variadic templates очевидно облегчает жизнь программистам. Однако бывают совсем экзотические свёртки с их участием. Давайте посмотрим на одну такую. Имеем бинарное дерево на 1й картинке. И мы хотим заставить работать код на второй картинке.…
#poll
Спасибо за ваши ответы : ) Правильное решение было, но моё немного отличается, потому предлагаю такое:

template<class T, class... Args>
Node<T>* tree_get(Node<T>* top, Args... args) {
return (top ->* ... ->* args);
}

auto left = &Node<int>::left;
auto right = &Node<int>::right;
👍1
#cpp
[видео]: Declarative Control Flow.
Андрей Александреску(как всегда замечательный) рассказывает о std::uncaught_exceptions, SCOPE_EXIT, SCOPE_FAIL и SCOPE_SUCCESS.
https://www.youtube.com/watch?v=WjTrfoiB0MQ
👍1
#cpp #pub
Опубликовал ещё одну статью по аллокаторам. Спасибо @gepardius и @dranikpg за ревью и замечания.
👍9
#cpp #common
[видео]: Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step.
https://www.youtube.com/watch?v=ncHmEUmJZf4
👍1
#cpp #proposals
Ещё немножко предложений, принятых в С++23 (и не только).

1. Литерал z для преобразования чисел в size_t: wg21.link/p0330 .
2. any_invocable -- move-only std::function: wg21.link/p0288 .
3. #embed -- #include for binary data: wg21.link/p1967 .
4. |> -- новый неперегружаемый оператор для цепочки функций: wg21.link/p2011 .
5. Поддержка инструментов для работы с линейной алгеброй в библиотеке: wg21.link/p1385r0 .
6. std::colony или std::hive: wg21.link/p0447r4 .
7. allocate_with_size для аллокаторов: wg21.link/p0401r1 .
8. Postfix fold expressions: wg21.link/p2355r0 .
9. Argument type deduction for non-trailing parameter packs: wg21.link/p2347r2 .
10. Гарантированное copy elision для named return objects: wg21.link/p2025r0 .
11. Статическая рефлексия: wg21.link/p2320r0 .
👍21
#cpp
Краткий ликбез (наверное уже последний) по основным нововведениям в С++20.
cppstories.com/2022/20-smaller-cpp20-features/
1👍1
#cpp
Рефлексия в C++Next на практике.
habr.com/ru/post/598981/
👍2
#cpp
Метапрограммирование в C++ и русская литература: через страдания к просветлению.
habr.com/ru/article/448466/
1👍1
#cpp
[видео]
CppCon 2019. Timur Doumler. Type punning in modern C++.
Автор рассказывает об алиасинге типов и strict alias rule, выравнивании, неопределённом поведении и как его избежать.
youtube.com/watch?v=_qzMpk-22cc
1👍1
#cpp
Динамический неоднородный плотно упакованный контейнер.
habr.com/ru/post/302372/
1👍1
#cpp
Элементы функционального программирования в C++.

[из Википедии] Частичное применение - возможность в ряде языков программирования зафиксировать часть аргументов многоместной функции и создать другую функцию.
habr.com/ru/post/313370/

Композиции отображений.
habr.com/ru/post/328624/
1👍1
#algo
Довольно приятный плейлист про не очень стандартные алгоритмы, которые ещё и хорошо поясняются.
www.youtube.com/playlist?list=PLc82OEDeni8SGp5CX8Ey1PdUcoi8Jh1Q_
1👍1
1👍1
#cpp
Помоги компилятору помочь тебе.
Автор рассказывает о флагах компиляции, что они делают, и почему стоит их использовать в своих проектах.
habr.com/ru/post/490850/
1👍1
#cpp #proposals
Пачка новых предложений за январь.

1. У бумаги про std::hive уже 19 ревизий. И тут ещё появилась просьба вернуть это предложение в 23й стандарт. Оч интересно, как это предложение летает туда-сюда. Мне почему-то забавно.

2. Пары и туплы очень похожие типы, ведь первое просто частный случай второго. Туплы могут быть сконструированы из пар, но не наоборот. Такое положение наводит на мысли, что std::pair немного избыточен. Удалять его конечно никто не будет, но туплам можно добавить некоторые возможности пар, чтобы последние использовались реже. Proposal.

3. Из C делают современный язык, хех. Но местами выглядит это конечно мда: Basic lambdas for C, Improve type generic programming.

4. Ослабление ограничений для constexpr. На самом деле тут ничего капитального. Просто какие-то мелочи.

5. std::breakpoint для остановки при выполнении в дебаге. Честно говоря, не очень понимаю, зачем тащить это в язык. Дебагеры хорошо справляются.

6. std::is_debuger_present для понимания, отлаживается ли сейчас программа. Вот это уже что-то полезное. Довольно часто приходилось пихать вывод только для отладки.

7. Сделать move_iterator<T*> random_access итератором. Это поможет выполнять некоторые операции с ренджами эффективнее.

8. Более строгое требование для атрибута [[assume(...)]].
1