// Copyright (C) 2005, Fernando Luis Cacciola Carballal. // // Use, modification, and distribution is subject to the Boost Software // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/lib/optional for documentation. // // You are welcome to contact the author at: // fernando_cacciola@hotmail.com // #ifndef BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP #define BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP #include #include #include "boost/optional/optional.hpp" #include "boost/utility/value_init.hpp" namespace boost { template inline std::basic_ostream& operator<<(std::basic_ostream& out, optional const& v) { if ( out.good() ) { if ( !v ) out << "--" ; else out << ' ' << *v ; } return out; } template inline std::basic_istream& operator>>(std::basic_istream& in, optional& v) { if ( in.good() ) { int d = in.get(); if ( d == ' ' ) { T x ; in >> x; v = x ; } else v = optional() ; } return in; } } // namespace boost #endif