12345678910111213141516171819202122232425262728293031323334353637 |
-
- [section IO operators]
- It is possible to use `optional<T>` with IO streams, provided that `T` can be used with streams. IOStream operators are defined in a separate header.
- ``
- #include <iostream>
- #include <boost/optional/optional_io.hpp>
- int main()
- {
- boost::optional<int> o1 = 1, oN = boost::none;
- std::cout << o1;
- std::cin >> oN;
- }
- ``
- The current implementation does not guarantee any particular output. What it guarantees is that if streaming out and then back in `T` gives the same value, then streaming out and then back in `optional<T>` will also give back the same result:
- ``
- #include <cassert>
- #include <sstream>
- #include <boost/optional/optional_io.hpp>
- int main()
- {
- boost::optional<int> o1 = 1, oN = boost::none;
- boost::optional<int> x1, x2;
- std::stringstream s;
- s << o1 << oN;
- s >> x1 >> x2;
- assert (o1 == x1);
- assert (oN == x2);
- }
- ``
- [endsect]
|