diff options
author | Anthony Wang | 2021-04-28 07:41:35 -0500 |
---|---|---|
committer | GitHub | 2021-04-28 07:41:35 -0500 |
commit | 2afb3344846a3d419dff293bb518e2f1a88b6f1b (patch) | |
tree | 6bbd0c3bc86cf671d18528b2131a6b2514167cee | |
parent | 9a450cca8ad88d226811e3d2a549c3d7957ad2af (diff) |
Rewrite using operator overloading
-rw-r--r-- | channels/channels.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/channels/channels.cpp b/channels/channels.cpp index f1964db..8d4b6cd 100644 --- a/channels/channels.cpp +++ b/channels/channels.cpp @@ -6,23 +6,24 @@ class channel { private: std::any val; public: - void write(auto v) { + void operator<<(auto & v) { val = v; } - auto read() { + void operator>>(auto & v) { while (!val.has_value()); - auto ret = val; + v = std::any_cast<decltype(v)>(val); val.reset(); - return ret; } }; int main() { channel c; int x = 1; - c.write(x); - std::cout << std::any_cast<int>(c.read()) << std::endl; + c << x; std::string y = "Hello world"; - c.write(y); - std::cout << std::any_cast<std::string>(c.read()) << std::endl; + c >> x; + c << y; + std::cout << x << std::endl; + c >> y; + std::cout << y << std::endl; } |