fork download
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <functional>
  4. #include <vector>
  5.  
  6. template <class T>
  7. struct twicer : std::unary_function<T,T>
  8. {
  9. T operator()( const T& t ) const { return t * 2; }
  10. };
  11.  
  12. template <class _Tp, class FT>
  13. struct myplus : public std::binary_function<_Tp, _Tp, _Tp>
  14. {
  15. _Tp operator()(const _Tp& __x, const _Tp& __y) const
  16. { return __x + funktor(__y); }
  17.  
  18. FT funktor;
  19. };
  20.  
  21. int main() {
  22.  
  23. std::vector<int> v = {1,2};
  24.  
  25. std::cout << std::accumulate( v.begin(), v.end(), 0, myplus<int,twicer<int> >() ) << std::endl;
  26. //std::cout << std::accumulate( v.begin(), v.end(), 0, std::plus<int>() ) << std::endl;
  27.  
  28. return 0;
  29. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
6