Romanticism is dangerous.
esv::raii_lock is a RAII-only lock template class for a mutex. Its usage is similar to std::lock_guard.
esv::raii_lock is designed for esv::print firstly, but it can be used for general purpose.
Calling Sig:
std::mutex mutex; { esv::raii_lock<std::mutex> lock{mutex}; } // Auto-unlock when leaving this scope.
#include <esvcpp/core.hpp> #include <future> int main() { std::mutex mutex; auto f = std::async( [&mutex] { esv::raii_lock<std::mutex> lock{mutex}; std::cout << "Hello c++!" << std::endl; } ); esv::print(mutex, "Hello c++ by", "esv::print!"); }