Вопросы с собеседований по C++ и ответы на них.
Как запустить своего ии-агента: https://clc.to/tvpmDQ
По рекламе: @tproger_sales_bot
Учиться у нас: https://proglib.io/w/9ccf302b
Для обратной связи: @proglibrary_feeedback_bot
Post #1417
562
БИ @cpp_interview_lib
Showing posts older than #1418 · Back to latest
std::promise — собрать его. Допиши общее состояние (shared state) на мьютексе и condition_variable.template <class T>
struct SharedState {
std::mutex m;
std::condition_variable cv;
std::optional<T> value;
bool ready = false;
void set(T v) {
// TODO: под мьютексом положить value, поднять ready, разбудить ждущих
}
T get() {
// TODO: дождаться ready под cv, вернуть value
}
};
get() блокируется, пока не вызовут set(), и корректно работает, если set() случился до get(). «Ага-момент» — почему именно cv.wait с предикатом, а не голый wait.


«AI-инструменты в разработке: пишем код быстрее»

Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
std::thread, что-то делает и в конце — terminate() и аварийное завершение всего приложения. Без единого явного throw в коде.void DoWork(bool earlyExitCondition) {
std::thread worker([]() {
Sleep(2000);
std::cout << "Done\n";
});
if (earlyExitCondition) {
return; // worker все ещё joinable!
}
worker.join();
}std::thread вызывает std::terminate, если поток всё ещё joinable, и предложи паттерн, который защищает от этого на всех путях выхода из функции, включая исключения.«Мультиагентные системы: почему большинство архитектур переусложнены»



Forwarded from Библиотека задач по C++ | тесты, код, задания
struct Widget {
std::string name;
// отдаём name с тем же value-category, что и сам объект
auto&& title(this auto&& self) {
return std::forward<decltype(self)>(self).name;
}
};
const std::string& bad = Widget{"btn"}.title(); // ❓
std::println("{}", bad);title() при вызове на rvalue Widget, почему bad ссылается на уничтоженный объект, и где здесь lifetime extension НЕ срабатывает (и почему именно для deducing-this это особенно коварно). Как спроектировать API, чтобы компилятор ловил это?
std::vector<int> getData() { return {1, 2, 3}; }
for (int x : getData() // временный 1
| filtered) // вью поверх него
std::cout << x;