24 stream <<
"\n--- Summary for Binary Operators for std::array and std::tuple --- "<<
endL;
26 stream <<
"1. tuple-tuple binary operators +, -, *, and / are defined !!" <<
endL;
28 stream <<
"2. scalar-tuple, tuple-scalar binary operators +, -, *, and / are defined !!" <<
endL;
30 stream <<
"3. array-array binary operators +, -, *, and / are defined !!" <<
endL;
32 stream <<
"4. scalar-array, array-scalar binary operators +, -, *, and / are defined !!" <<
endL;
34 stream <<
"5. operators ==, !=, >, <, >=, <= are defined for the same type of std::array<T, Size> in C++ Standard."<<
endl;
35 stream <<
" But I implemented them for differnt types of std::array< T, Size1 > and std::array< S, Size2 >."<<
endL;
40 stream <<
"--- Array Binary Operations ---" <<
endL;
42 std::array a{1.0, 2.5, 3.5};
43 std::array b{1, 2, 3};
44 std::array c{2.0f, 2.5f, 3.2f};
50 stream<<
" 1. Simple Binary Operations with Different Types" <<
endL;
51 stream << a <<
" + " << b <<
" = " << (a + b) <<
endl;
52 stream << a <<
" - " << b <<
" = " << (a - b) <<
endl;
53 stream << a <<
" * " << b <<
" = " << (a * b) <<
endl;
54 stream << a <<
" / " << b <<
" = " << (a / b) <<
endL;
56 std::array aa{2.0, 3.5, 7.5};
57 std::array bb{3, 1, 2};
58 std::array cc{3.0f, 1.5f, 2.2f};
68 stream <<
" 2. Nested Binary Operation with Different Types" <<
endL;
69 stream << d <<
" + " << e <<
" = " <<(d + e) <<
endl;
70 stream << d <<
" - " << e <<
" = " <<(d - e) <<
endl;
71 stream << d <<
" * " << f <<
" = " <<(d * f) <<
endl;
72 stream << d <<
" / " << f <<
" = " <<(d / f) <<
endL;
74 stream <<
" 3. Simple Scalar-Tuple, Tuple-Scalar Operations" <<
endL;
75 stream <<
" 2 + "<< a <<
" = " << (2 + a) <<
endL;
76 stream <<
" " << a <<
" + "<< 3 <<
" = " << (a + 3) <<
endL;
77 stream <<
" 2 - "<< a <<
" = " << (2 - a) <<
endL;
78 stream <<
" " << a <<
" - "<< 3 <<
" = " << (a - 3) <<
endL;
79 stream <<
" 2 * "<< a <<
" = " << (2 * a) <<
endL;
80 stream <<
" " << a <<
" * "<< 3 <<
" = " << (a * 3) <<
endL;
81 stream <<
" 2 / "<< a <<
" = " << (2 / a) <<
endL;
82 stream <<
" " << a <<
" / "<< 3 <<
" = " << (a / 3) <<
endL;
84 stream <<
" 4. Nested Scalar-Tuple, Tuple-Scalar Operations" <<
endL;
85 stream <<
" 2 + "<< d <<
" = " << (2 + d) <<
endL;
86 stream <<
" " << d <<
" + "<< 3 <<
" = " << (d + 3) <<
endL;
87 stream <<
" 2 - "<< d <<
" = " << (2 - d) <<
endL;
88 stream <<
" " << d <<
" - "<< 3 <<
" = " << (d - 3) <<
endL;
89 stream <<
" 2 * "<< d <<
" = " << (2 * d) <<
endL;
90 stream <<
" " << d <<
" * "<< 3 <<
" = " << (d * 3) <<
endL;
91 stream <<
" 2 / "<< d <<
" = " << (2 / d) <<
endL;
92 stream <<
" " << d <<
" / "<< 3 <<
" = " << (d / 3) <<
endL;
97 stream <<
"--- Tuple Binary Operations ---" <<
endL;
99 std::tuple a{1, 2.5, 3.5};
100 std::tuple b{1.5, 2, 3};
101 std::tuple c{1, 2, 3 };
107 stream<<
" 1. Simple Binary Operations with Different Types" <<
endL;
108 stream << a <<
" + " << b <<
" = " << (a + b) <<
endl;
109 stream << a <<
" - " << b <<
" = " << (a - b) <<
endl;
110 stream << a <<
" * " << b <<
" = " << (a * b) <<
endl;
111 stream << a <<
" / " << b <<
" = " << (a / b) <<
endL;
121 stream<<
" 2. Nested Binary Operation with Different Types" <<
endL;
127 stream <<
" 3. Simple Scalar-Tuple, Tuple-Scalar Operation" <<
endL;
128 stream <<
" 2 + "<< a <<
" = " << (2 + a) <<
endL;
129 stream <<
" "<< a <<
" + "<< 3 <<
" = " << (a + 3) <<
endL;
130 stream <<
" 2 - "<< a <<
" = " << (2 - a) <<
endL;
131 stream <<
" "<< a <<
" - "<< 3 <<
" = " << (a - 3) <<
endL;
132 stream <<
" 2 * "<< a <<
" = " << (2 * a) <<
endL;
133 stream <<
" "<< a <<
" * "<< 3 <<
" = " << (a * 3) <<
endL;
134 stream <<
" 2 / "<< a <<
" = " << (2 / a) <<
endL;
135 stream <<
" "<< a <<
" / "<< 3 <<
" = " << (a / 3) <<
endL;
137 stream <<
" 4. Nested Scalar-Tuple, Tuple-Scalar Operation" <<
endL;
138 stream <<
" 2 + "<< d <<
" = " << (2 + d) <<
endL;
139 stream <<
" "<< d <<
" + "<< 3 <<
" = " << (d + 3) <<
endL;
140 stream <<
" 2 - "<< d <<
" = " << (2 - d) <<
endL;
141 stream <<
" "<< d <<
" - "<< 3 <<
" = " << (d - 3) <<
endL;
142 stream <<
" 2 * "<< d <<
" = " << (2 * d) <<
endL;
143 stream <<
" "<< d <<
" * "<< 3 <<
" = " << (a * 3) <<
endL;
144 stream <<
" 2 / "<< d <<
" = " << (2 / d) <<
endL;
145 stream <<
" "<< d <<
" / "<< 3 <<
" = " << (d / 3) <<
endL;
150 stream <<
"--- File Contents Summary ---\n\n--- Tuple Equality Comparison Operators - defined in Standard C++! " <<
endL;
152 std::tuple a{1, 2.5, 3.5};
153 std::tuple b{1.5, 2, 3};
154 std::tuple<double, double, double> c{1, 2.5, 3.5};
156 stream <<
" std::tuple<int, double, double> a = " << a <<
endL;
157 stream <<
" std::tuple<double, int, int> b = " << b <<
endL;
158 stream <<
" std::tuple<double, double, double> c = " << c <<
endL;
160 stream<<
" 1. Simple Equality Operators" <<
endL;
162 stream <<
" (a == b) ? " << (a == b) <<
" <- Comparison Between Differet Types" <<
endl;
164 stream <<
" (a != b) ? " << (a != b) <<
" <- Comparison Between Differet Types" <<
endl;
165 stream <<
" (a == c) ? " << (a == c) <<
" <- Comparison Between Differet Types" <<
endL;
167 stream<<
" 2. Nested Equality Operators" <<
endL;
192 stream <<
"--- Array Equality Comparison Operators With Different Types With the Same Size! " <<
endL;
194 std::array a{1, 2, 3};
195 std::array b{1.0, 2.0, 3.0};
196 std::array c{1.0, 2.5, 3.0};
198 stream <<
" std::array<int, 3> a = " << a <<
endl;
199 stream <<
" std::array<double, 3> b = " << b <<
endl;
200 stream <<
" std::array<double, 3> c = " << c <<
endL;
202 stream <<
"1. Array Equality with Different Type, of Same Size! " <<
endL;
204 stream <<
"<int, 3>"<< a <<
" == "<< b <<
" <double, 3> (all elements pairwise equal) ? "
207 stream <<
"<int, 3>"<< a <<
" == "<< c <<
"<double, 3> (all elements pairwise equal) ? "
210 stream <<
"<int, 3>"<< a <<
" != "<< b <<
" <double, 3> !(all elements pairwise equal) ? "
213 stream <<
"<int, 3>"<< a <<
" != "<< c <<
"<double, 3> !(all elements pairwise equal) ? "
216 stream <<
"2. Array Comparison with Different Type, of Same Size! " <<
endL;
218 stream <<
"<int, 3> "<< a <<
" > " << b <<
" <double, 3> (all elements pairwise > ) ? "
221 stream <<
"<int, 3> "<< a <<
" >= " << b <<
" <double, 3> (all elements pairwise >= ) ? "
224 stream <<
"<int, 3> "<< a <<
" < " << b <<
" <double, 3> (all elements pairwise < ) ? "
227 stream <<
"<int, 3> "<< a <<
" <= " << b <<
" <double, 3> (all elements pairwise <= ) ? "
230 stream <<
"<int, 3> "<< a <<
" < " << c <<
"<double, 3> (all elements pairwise < ) ? "
233 stream <<
"<int, 3> "<< a <<
" <= " << c <<
"<double, 3> (all elements pairwise <= ) ? "
236 stream <<
"<int, 3> "<< a <<
" > " << c <<
"<double, 3> (all elements pairwise > ) ? "
239 stream <<
"<int, 3> "<< a <<
" >= " << c <<
"<double, 3> (all elements pairwise >= ) ? "
245 stream <<
"--- Array Equality Comparison Operators With Same Types With DIFFERENT Size! " <<
endL;
247 std::array a{1, 2, 3};
248 std::array b{1, 2, 3, 4};
250 stream <<
" std::array<int, 3> a = " << a <<
endl;
251 stream <<
" std::array<int, 4> b = " << b <<
endL;
253 stream << a <<
" == " << b <<
" ? " << (a == b) <<
endl;
254 stream << a <<
" != " << b <<
" ? " << (a != b) <<
endl;
256 stream << a <<
" < " << b <<
" ? " << (a < b) <<
endl;
257 stream << a <<
" <= " << b <<
" ? " << (a <= b) <<
endl;
258 stream << a <<
" > " << b <<
" ? " << (a > b) <<
endl;
259 stream << a <<
" >= " << b <<
" ? " << (a >= b) <<
endL;
261 stream <<
"\t\t--- By Thomas Kim, Feb. 05, 2020. ---" <<
endl;
void test_array_binary_operations()
void test_tuple_binary_operations()
void test_array_equality_comparison_different_size_operations()
void test_tuple_equality_comparison_binary_operations()
void test_array_equality_comparison_same_size_operations()
void summary_for_binary_operators_for_array_tuple()
Type to string name conversions are defined.
Stream output operators << are implemented.
Type functions are implemented.