#include #include #include class channel { private: std::any val; public: void operator<<(auto & v) { val = v; } void operator>>(auto & v) { while (!val.has_value()); v = std::any_cast(val); val.reset(); } }; int main() { channel c; int x = 1; c << x; std::string y = "Hello world"; c >> x; c << y; std::cout << x << std::endl; c >> y; std::cout << y << std::endl; }