Библиотека C/C++ разработчика | cpp, boost, qt
19.5K subscribers
2K photos
64 videos
16 files
4.27K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17

#WXSSA
Download Telegram
Прямой доступ к старым ценам закрывается

Завтра все программы Proglib.academy станут дороже. Успейте сегодня зафиксировать бюджет на обучение, пока стоимость не вышла из-под контроля.

Оптимизировать свой путь в IT
😁4❤‍🔥1
🍙 Почему std::piecewise_construct принимает кортежи, а не variadic args?

Большинство разработчиков используют emplace в контейнерах и не задумываются, как map.emplace() различает аргументы для ключа и значения.

🔍 Под капотом

Когда вы вызываете map.emplace(key_args..., value_args...), компилятор не может понять, где заканчиваются аргументы ключа и начинаются аргументы значения. Для pair это особенно критично.

std::piecewise_construct — это тег-пустышка, которая активирует специальный конструктор pair:

pair(piecewise_construct_t, 
tuple<KeyArgs...>,
tuple<ValueArgs...>)


⚡️ Кортежи создают явную границу. Компилятор видит два отдельных пакета параметров и использует std::apply для распаковки каждого tuple в конструктор соответствующего элемента пары.

❗️Практика:

Без этого механизма невозможно было бы создать pair со сложными типами in-place. Теперь вы избегаете промежуточных копий и move-операций.

📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
💯4👍1