Guest User

Untitled

a guest
Nov 25th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. template< int size, typename Type >
  2. class Vector;
  3.  
  4. template< int size, typename LeftType, typename RightType >
  5. Vector<size, ?> operator+( const Vector<size, LeftType>& left, const Vector<size, RightType>& right )
  6. {...}
  7.  
  8. #include <iostream>
  9. #include <type_traits>
  10. #include <vector>
  11.  
  12. template< int size, typename Type >
  13. struct Vector
  14. {
  15. std::vector<Type> v;
  16. };
  17.  
  18. template< int size, typename LeftType, typename RightType >
  19. Vector<size, typename std::common_type<LeftType, RightType>::type>
  20. operator +( const Vector<size, LeftType>& left, const Vector<size, RightType>& right )
  21. {
  22. Vector<size, typename std::common_type<LeftType, RightType>::type> v;
  23. v.v.resize( size );
  24.  
  25. for ( int i = 0; i < size; i++ ) v.v[i] = left.v[i] + right.v[i];
  26.  
  27. return v;
  28. }
  29.  
  30. int main()
  31. {
  32. Vector<5, int> left = { { 1, 2, 3, 4, 5 } };
  33. Vector<5, double> right = { { 0.1, 0.2, 0.3, 0.4, 0.5 } };
  34.  
  35. auto v = left + right;
  36.  
  37. for ( int i = 0; i < 5; i++ ) std::cout << v.v[i] << ' ';
  38. std::cout << std::endl;
  39. }
  40.  
  41. 1.1 2.2 3.3 4.4 5.5
  42.  
  43. #include<utility>
  44.  
  45. template< int size, typename LeftType, typename RightType >
  46. Vector<size, decltype(std::declval<LeftType>() + std::declval<RightType>())> ...
Add Comment
Please, Sign In to add comment