#include #include using namespace snplib; int main() { int i = 10; double d = 7.7; std::string s = "klewjdl"; HeterogenMap hmap; bool ok = hmap.push("int_key", i, std::tuple{}); if (!ok) { std::println("cannot insert integer value {}", i); } ok = hmap.push("str_key", s); if (!ok) { std::println("cannot insert string value {}", s); } ok = hmap.push("dbl_key", d, std::tuple{}); if (!ok) { std::println("cannot insert double value {}", d); } auto rd = hmap.get("int_key"); if (rd) { std::println("hmap[int_key] = {}", rd.value()); } else { std::println("cannot convert to double value with key 'int_key'"); } auto rl = hmap.get("dbl_key"); if (rl) { std::println("hmap[dbl_key] = {}", rl.value()); } else { std::println("cannot convert to long value with key 'dbl_key'"); } std::println("\n{:*^80}", " copy ctor "); HeterogenMap hmap_copy(hmap); auto rs = hmap.get("str_key"); if (rs) { std::println("hmap['str_key'] = {}", rs.value()); } else { std::println("cannot get hmap['str_key']"); } rs = hmap_copy.get("str_key"); if (rs) { std::println("hmap_copy['str_key'] = {}", rs.value()); } else { std::println("cannot get hmap_copy['str_key']"); } std::println("\n{:*^80}", " move ctor "); HeterogenMap hmap_move(std::move(hmap)); std::println("contains hmap_move['str_key']: {}", hmap_move.contains("str_key")); rs = hmap_move.get("str_key"); if (rs) { std::println("hmap_move['str_key'] = {}", rs.value()); } else { std::println("cannot get hmap_move['str_key']"); } rs = hmap.get("str_key"); if (rs) { std::println("hmap['str_key'] = {}", rs.value()); } else { std::println("cannot get hmap['str_key']"); std::println("contains hmap['str_key']: {}", hmap.contains("str_key")); } std::println("\n{:*^80}", " set value "); double dd = 123.456789; std::println("set hmap_copy['int_key'] to {} ...", dd); if (hmap_copy.set("int_key", dd)) { std::println("cannot set hmap_copy['int_key'] to {}", dd); } else { auto ri = hmap_copy.get("int_key"); if (ri) { std::println("hmap_copy['int_key'] = {}", ri.value()); } else { std::println("cannot get value of hmap_copy['int_key']"); } } return 0; }