std::function — хороший инструмент. Но есть одна проблема: он требует копируемости. А что, если твой callable некопируемый? В C++23 есть решение — std::move_only_function.Представь: ты хочешь передать лямбду, которая захватывает
std::unique_ptr. С std::function — UB или не скомпилируется. С std::move_only_function — просто работает.// C++23
#include <functional>
#include <memory>
auto make_task(std::unique_ptr<int> data) {
// ✅ Работает! std::function здесь не справится
return std::move_only_function<void()>{
[d = std::move(data)]() {
std::println("Value: {}", *d);
}
};
}
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность