```cpp
//// time_t_timer.cpp// ~~~~~~~~~~~~~~~~//// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)//// Distributed under the Boost Software License, Version 1.0. (See accompanying// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//#include<boost/asio.hpp>#include<ctime>#include<iostream>struct time_t_traits
{// The time type.typedef std::time_t time_type;// The duration type.struct duration_type
{duration_type():value(0){}duration_type(std::time_t v):value(v){}
std::time_t value;};// Get the current time.static time_type now(){return std::time(0);}// Add a duration to a time.static time_type add(const time_type& t,const duration_type& d){return t + d.value;}// Subtract one time from another.static duration_type subtract(const time_type& t1,const time_type& t2){returnduration_type(t1 - t2);}// Test whether one time is less than another.staticboolless_than(const time_type& t1,const time_type& t2){return t1 < t2;}// Convert to POSIX duration type.static boost::posix_time::time_duration to_posix_duration(const duration_type& d){return boost::posix_time::seconds(d.value);}};typedef boost::asio::basic_deadline_timer<
std::time_t, time_t_traits> time_t_timer;voidhandle_timeout(const boost::system::error_code&){
std::cout <<"handle_timeout\n";}intmain(){try{
boost::asio::io_service io_service;
time_t_timer timer(io_service);
timer.expires_from_now(5);
std::cout <<"Starting synchronous wait\n";
timer.wait();
std::cout <<"Finished synchronous wait\n";
timer.expires_from_now(5);
std::cout <<"Starting asynchronous wait\n";
timer.async_wait(handle_timeout);
io_service.run();
std::cout <<"Finished asynchronous wait\n";}catch(std::exception& e){
std::cout <<"Exception: "<< e.what()<<"\n";}return0;}
```cpp//// time_t_timer.cpp// ~~~~~~~~~~~~~~~~//// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)//// Distributed under the Boost Software License, Version 1.0. (Se...