116 template <
class duration_t = std::chrono::milliseconds>
117 typename duration_t::rep
count()
const;
132 reference_(
std::chrono::steady_clock::now()),
133 accumulated_(
std::chrono::
duration<long double>(0)) {
143 accumulated_ = std::chrono::duration<long double>(0);
144 reference_ = std::chrono::steady_clock::now();
145 }
else if (paused_) {
146 reference_ = std::chrono::steady_clock::now();
152 if (started_ && !paused_) {
154 accumulated_ = accumulated_ + std::chrono::duration_cast< std::chrono::duration<long double> >(now - reference_);
163 reference_ = std::chrono::steady_clock::now();
164 accumulated_ = std::chrono::duration<long double>(0);
168 template <
class duration_t>
172 return std::chrono::duration_cast<duration_t>(accumulated_).count();
174 return std::chrono::duration_cast<duration_t>(
175 accumulated_ + (std::chrono::steady_clock::now() - reference_)).count();
178 return duration_t(0).count();
This class works as a stopwatch.
Timer(Timer &&other)=default
Transfer constructor.
void start()
Start/resume the timer.
std::chrono::duration< long double > accumulated_
void reset()
Reset the timer.
void stop()
Stop/pause the timer.
Timer(bool start=false)
Constructor.
Timer & operator=(const Timer &other)=default
Assignment operator by copy.
Timer(const Timer &other)=default
Copy constructor.
virtual ~Timer()=default
Destructor.
Timer & operator=(Timer &&other)=default
Assignment operator by transfer.
duration_t::rep count() const
Return the elapsed time.
std::chrono::steady_clock::time_point reference_
clock::time_point time_point