Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template< int size, typename Type >
- class Vector;
- template< int size, typename LeftType, typename RightType >
- Vector<size, ?> operator+( const Vector<size, LeftType>& left, const Vector<size, RightType>& right )
- {...}
- #include <iostream>
- #include <type_traits>
- #include <vector>
- template< int size, typename Type >
- struct Vector
- {
- std::vector<Type> v;
- };
- template< int size, typename LeftType, typename RightType >
- Vector<size, typename std::common_type<LeftType, RightType>::type>
- operator +( const Vector<size, LeftType>& left, const Vector<size, RightType>& right )
- {
- Vector<size, typename std::common_type<LeftType, RightType>::type> v;
- v.v.resize( size );
- for ( int i = 0; i < size; i++ ) v.v[i] = left.v[i] + right.v[i];
- return v;
- }
- int main()
- {
- Vector<5, int> left = { { 1, 2, 3, 4, 5 } };
- Vector<5, double> right = { { 0.1, 0.2, 0.3, 0.4, 0.5 } };
- auto v = left + right;
- for ( int i = 0; i < 5; i++ ) std::cout << v.v[i] << ' ';
- std::cout << std::endl;
- }
- 1.1 2.2 3.3 4.4 5.5
- #include<utility>
- template< int size, typename LeftType, typename RightType >
- Vector<size, decltype(std::declval<LeftType>() + std::declval<RightType>())> ...
Add Comment
Please, Sign In to add comment