#include #include #include #include template static void dump(S const &s, T const &v) { std::cout << s << '{'; for( auto const &x : v ){ std::cout << x << ", "; } std::cout << '}' << std::endl; } int main(int argc, char *argv[]) { // syntactic sugar operators for same container, same type using namespace dwu::operators::arithmetic; using namespace dwu::operators::shift; std::vector va = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; dump("va: ", va); auto vb = va + 10; auto vc = 20 + va; dump("vb = va + 10: ", vb); dump("vc = 20 + va: ", vc); vb += 30; dump("vb += 30: ", vb); vc -= 40; dump("vc -= 40: ", vc); auto vd = vb * vc; dump("vd = vb * vc: ", vd); auto vsa = va << 5; dump("vsa = va << 5: ", vsa); auto vsb = 1 << va; dump("vsb = 1 << va: ", vsb); auto vsc = vd >> va; dump("vsc = vd >> va: ", vsc); { // syntactic sugar for mixed container, mixed type using namespace dwu::operators_xcxt::arithmetic; std::list la = {100, 101, 101, 103, 104, 105}; dump("la: ", la); auto r_ad = la - vd; dump("r_ad = la - vd: ", r_ad); } { // syntactic sugar for mixed container, same type using namespace dwu::operators_xc::arithmetic; std::list lb = {200, 201, 201, 203, 204, 205}; dump("lb: ", lb); auto r_bd = lb + vd; dump("r_bd = lb + vd: ", r_bd); } { // syntactic sugar for same container, mixed type using namespace dwu::operators_xt::arithmetic; std::vector ve = {300, 301, 301, 303, 304, 305}; dump("ve: ", ve); auto r_ed = ve / vd; dump("r_ed = ve / vd: ", r_ed); } return 0; }