Какой статус имеет объект после успешного перемещения в современном C++ и какие операции над ним остаются корректными?
База Hintsage
Современный C++
Возможности стандартов C++11 и новее и идиоматичный код.
Практика
Вопросы: Современный C++
Чем принципиально отличается consteval от constexpr при вызове функции?
В практической обёртке над фабрикой параметр шаблона объявлен как forwarding-ссылка: что изменится, если передать его дальше без std::forward?
При каких условиях фабрика может вернуть объект, у которого запрещены копирование и перемещение, начиная с C++17?
Разберите, почему std::string_view может стать висячим представлением после возврата из функции.
Как в современном C++ передать лямбде владение некопируемым объектом, чтобы ресурс жил не дольше самой лямбды?
Фоновая задача запускается через std::jthread. Как завершится вызов run() при выходе из функции?
#include <chrono>
#include <thread>
void work(std::stop_token token) {
while (!token.stop_requested()) {
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
}
void run() {
std::jthread worker(work);
}
При расширении std::vector как noexcept у перемещающего конструктора элемента влияет на выбор между копированием и перемещением?
В графе объектов с взаимными ссылками за счёт чего std::weak_ptr разрывает цикл владения?
От чего зависит выбор между двумя шаблонными перегрузками, если обе подходят переданному типу, но одна ограничена более узким концептом?
Что произойдёт с выражением-аргументом по умолчанию при вызове std::optional<T>::value_or, если объект уже содержит значение?
Объясните механизм, из-за которого конвейер std::views::filter не выполняет фильтрацию при создании представления.
Вызов алгоритма получает временный диапазон. Определите тип результата и объясните защиту от висячего итератора:
#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>);
}
На шаблонную функцию приходится ветвь, корректная только для части типов. Как if constexpr позволяет скрыть некорректную ветвь при инстанцировании?
В обработчике событий почему std::variant иногда может оказаться без активной альтернативы после исключения?
Какова граница времени жизни скрытого массива, стоящего за std::initializer_list, если список создан как временный аргумент функции?
Практическая ситуация: два потока должны одновременно блокировать два разных мьютекса. Какой стандартный механизм C++17 выбрать, чтобы не получить взаимную блокировку?
Сравните семантику acquire-release и последовательной согласованности: какую гарантию даёт первая и чего она не гарантирует?
Что именно делает std::move с объектом до вызова конструктора или оператора перемещения?
В чём состоит главный риск CTAD при использовании шаблонного класса в публичном интерфейсе?
Показано 1–20 из 50