При проектировании очереди одноразовых задач, где callback может быть некопируемым, какую стандартную обёртку C++23 выбрать вместо std::function и почему?
База Hintsage
Программирование C++
Язык C++ и его модель выполнения.
Темы раздела
Выберите подраздел
- 0 вопросов
Общие вопросы
Смешанные вопросы по C++.
Открыть раздел - 50 вопросов
C++ Core
Синтаксис, типы, функции, классы и базовая семантика C++.
Открыть раздел - 50 вопросов
Управление памятью
RAII, время жизни объектов, указатели и владение ресурсами.
Открыть раздел - 50 вопросов
STL и контейнеры
Контейнеры, итераторы, алгоритмы и их сложность.
Открыть раздел - 50 вопросов
Шаблоны
Templates, специализация, вывод типов и метапрограммирование.
Открыть раздел - 50 вопросов
Многопоточность
Потоки, синхронизация, атомики и модель памяти C++.
Открыть раздел - 50 вопросов
Современный C++
Возможности стандартов C++11 и новее и идиоматичный код.
Открыть раздел
Практика
Вопросы: Программирование C++
Разберите ситуацию: несколько потоков читают и заменяют общий std::shared_ptr. Какой механизм C++20 нужен, чтобы синхронизировать доступ к самой переменной-указателю без внешнего мьютекса?
Как меняется семантика захвата *this вместо this в лямбде, возвращаемой из метода?
В универсальном адаптере требуется вызвать указатель на метод, не зная заранее, будет ли объект ссылкой или указателем. Какой механизм C++17 следует применить вместо ручного разветвления? Определите вывод программы.
#include <functional>
#include <iostream>
struct Device {
int read() const { return 42; }
};
int main() {
Device device;
auto member = &Device::read;
std::cout << std::invoke(member, device) << '
';
std::cout << std::invoke(member, &device) << '
';
}
Что позволяет std::pmr::polymorphic_allocator выбирать стратегию выделения памяти во время выполнения без изменения типа контейнера?
В чём различие между std::remove_cvref_t и std::decay_t при нормализации типа шаблонного аргумента?
В функции разбирают именованный объект через структурированное связывание: какой выбор объявления сохранит ссылки на его элементы вместо создания копии объекта?
Практическая ситуация: API должен штатно возвращать либо значение, либо диагностическую ошибку без исключений. Какой механизм C++23 наиболее идиоматичен?
Назовите механизм, определяющий, начнёт ли тело корутины выполняться сразу после вызова или останется приостановленным.
Зачем функции-члены перегружают по квалификатору ссылки на объект и какой вызов это позволяет запретить?
В чём состоит главный риск CTAD при использовании шаблонного класса в публичном интерфейсе?
Что именно делает std::move с объектом до вызова конструктора или оператора перемещения?
Сравните семантику acquire-release и последовательной согласованности: какую гарантию даёт первая и чего она не гарантирует?
Практическая ситуация: два потока должны одновременно блокировать два разных мьютекса. Какой стандартный механизм C++17 выбрать, чтобы не получить взаимную блокировку?
Какова граница времени жизни скрытого массива, стоящего за std::initializer_list, если список создан как временный аргумент функции?
В обработчике событий почему std::variant иногда может оказаться без активной альтернативы после исключения?
На шаблонную функцию приходится ветвь, корректная только для части типов. Как if constexpr позволяет скрыть некорректную ветвь при инстанцировании?
Вызов алгоритма получает временный диапазон. Определите тип результата и объясните защиту от висячего итератора:
#include <algorithm>
#include <concepts>
#include <ranges>
#include <vector>
int main() {
auto result = std::ranges::find(std::vector{1, 2, 3}, 2);
static_assert(std::same_as<decltype(result), std::ranges::dangling>);
}
Объясните механизм, из-за которого конвейер std::views::filter не выполняет фильтрацию при создании представления.
Что произойдёт с выражением-аргументом по умолчанию при вызове std::optional<T>::value_or, если объект уже содержит значение?
Показано 21–40 из 300