Код: Выделить всё
#include
#include
#include
#include
#include
#include
using namespace std::chrono_literals;
class Job {
public:
~Job() {
// exposition only
std::cout WaitFinished();
}
}
static void Abort(std::weak_ptr job)
{
std::shared_ptr locked_job = job.lock();
if (locked_job != nullptr)
{
locked_job->CancelSync();
}
}
private:
std::atomic cancel_flag = false;
std::thread bg_thread;
};
int main(void)
{
auto job = Job::Create();
std::this_thread::sleep_for(350ms);
Job::Abort(job);
}
Мой ключевой момент — метод Create, в котором существенно, чтобыshared_ptr фиксировался по значению, но стандарт C++ явно указывает, что список захвата, такой как [=job], является неправильно сформированным, поскольку явный захват по значению избыточен для по умолчанию захват по значению. Существует ли совместимый способ четко документировать значение job в коде C++ (не в комментариях)?
Подробнее здесь: https://stackoverflow.com/questions/797 ... expression
Мобильная версия