#pragma once #include #include #include #include /*! * \brief The elapsed_logger class - print `message: ` on destruction */ template class elapsed_logger { using clk = std::chrono::high_resolution_clock; public: explicit elapsed_logger(const std::string &&message) : m_start{clk::now()} , m_message{std::move(message)} {} ~elapsed_logger() { using namespace std::chrono; const auto duration = duration_cast(clk::now() - m_start); std::cout << m_message << ": " << std::setw(W) << duration << std::endl; } private: const std::chrono::time_point m_start; const std::string m_message; };