Functional Programming Using C++ Templates (Part 2) - Golodetz, S (Overload, 2007)