#include #include #include #include #include #include #include #include #include /* This should give the following output (or something similar at least): 5 {1, 2, 3} {(1 1), (2 2), (3 3)} (5 3.14) {hello, world} {{ab, c}, {def, g, hi}} SFINAE string literal */ int main() { print(std::cout, 5); std::cout << std::endl; std::vector v {1, 2, 3}; print(std::cout, v); std::cout << std::endl; std::map m { {1, 1}, {2, 2}, {3, 3} }; print(std::cout, m); std::cout << std::endl; std::tuple t { 5, 3.14 }; print(std::cout, t); std::cout << std::endl; std::string s[] { "hello", "world" }; print(std::cout, s); std::cout << std::endl; std::array, 2> a { std::vector{ "ab", "c" }, std::vector{"def", "g", "hi"} }; print(std::cout, a); std::cout << std::endl; char const* str {"SFINAE"}; print(std::cout, str); std::cout << std::endl; print(std::cout, "string literal"); std::cout << std::endl; }