- #include <iostream> 
- #include <deque> 
- #include <functional> 
-   
- struct way_point 
- { 
-     double time_stamp_s; 
-     unsigned int gps_nb; 
-     // Rest of members 
- }; 
-   
- double Get_time_stamp_s(way_point& wp) { return wp.time_stamp_s; } 
- double Get_gps_nb      (way_point& wp) { return wp.gps_nb;       } 
- // Rest of get-functions 
-   
- template<typename T> 
- std::deque<double> getVector(std::deque<way_point>& dwp, std::function<T(way_point&)> f) 
- { 
-     std::deque<double> vd; 
-     for (auto& it : dwp) 
-     { 
-         vd.emplace_back(f(it)); 
-     } 
-     return vd; 
- } 
-   
- int main() 
- { 
-     std::deque<way_point> dwp { {1.0,1}, {2.0,2}, {3.0,3} }; 
-   
-     std::deque<double> vd = getVector<double>(dwp, Get_time_stamp_s); 
-   
-     for (auto& it : vd) 
-     { 
-         std::cout << "Double: " << it << std::endl; 
-     } 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZGVxdWU+CiNpbmNsdWRlIDxmdW5jdGlvbmFsPgoKc3RydWN0IHdheV9wb2ludAp7CiAgICBkb3VibGUgdGltZV9zdGFtcF9zOwogICAgdW5zaWduZWQgaW50IGdwc19uYjsKICAgIC8vIFJlc3Qgb2YgbWVtYmVycwp9OwoKZG91YmxlIEdldF90aW1lX3N0YW1wX3Mod2F5X3BvaW50JiB3cCkgeyByZXR1cm4gd3AudGltZV9zdGFtcF9zOyB9CmRvdWJsZSBHZXRfZ3BzX25iICAgICAgKHdheV9wb2ludCYgd3ApIHsgcmV0dXJuIHdwLmdwc19uYjsgICAgICAgfQovLyBSZXN0IG9mIGdldC1mdW5jdGlvbnMKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0ZDo6ZGVxdWU8ZG91YmxlPiBnZXRWZWN0b3Ioc3RkOjpkZXF1ZTx3YXlfcG9pbnQ+JiBkd3AsIHN0ZDo6ZnVuY3Rpb248VCh3YXlfcG9pbnQmKT4gZikKewogICAgc3RkOjpkZXF1ZTxkb3VibGU+IHZkOwogICAgZm9yIChhdXRvJiBpdCA6IGR3cCkKICAgIHsKICAgICAgICB2ZC5lbXBsYWNlX2JhY2soZihpdCkpOwogICAgfQogICAgcmV0dXJuIHZkOwp9CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6ZGVxdWU8d2F5X3BvaW50PiBkd3AgeyB7MS4wLDF9LCB7Mi4wLDJ9LCB7My4wLDN9IH07CgogICAgc3RkOjpkZXF1ZTxkb3VibGU+IHZkID0gZ2V0VmVjdG9yPGRvdWJsZT4oZHdwLCBHZXRfdGltZV9zdGFtcF9zKTsKCiAgICBmb3IgKGF1dG8mIGl0IDogdmQpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJEb3VibGU6ICIgPDwgaXQgPDwgc3RkOjplbmRsOwogICAgfQp9