...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::cnv::basic_stream
// In header: <boost/convert/stream.hpp> template<typename Char> struct basic_stream { // types typedef Char char_type; typedef boost::cnv::basic_stream< char_type > this_type; typedef std::basic_stringstream< char_type > stream_type; typedef std::basic_istream< char_type > istream_type; typedef std::basic_streambuf< char_type > buffer_type; typedef std::basic_string< char_type > stdstr_type; typedef std::ios_base &(*)(std::ios_base &) manipulator_type; // member classes/structs/unions struct ibuffer_type : public buffer_type { // construct/copy/destruct ibuffer_type(char_type const *, std::size_t); }; struct obuffer_type : public buffer_type { }; // construct/copy/destruct basic_stream(); basic_stream(this_type &&); basic_stream(this_type const &) = delete; this_type & operator=(this_type const &) = delete; // public member functions BOOST_CNV_STRING_ENABLE(type const &, optional< string_type > &) const; BOOST_CNV_STRING_ENABLE(string_type const &, optional< type > &) const; template<typename type> void operator()(char_type const *, optional< type > &) const; template<typename type> void operator()(stdstr_type const &, optional< type > &) const; template<typename manipulator> boost::disable_if< boost::parameter::is_argument_pack< manipulator >, this_type & >::type operator()(manipulator); this_type & operator()(manipulator_type); this_type & operator()(std::locale const &); template<typename argument_pack> std::enable_if< boost::parameter::is_argument_pack< argument_pack >::value, this_type & >::type operator()(argument_pack const &); template<typename string_type, typename in_type> void to_str(in_type const &, boost::optional< string_type > &) const; template<typename string_type, typename out_type> void str_to(boost::cnv::range< string_type >, boost::optional< out_type > &) const; // private member functions template<typename argument_pack, typename keyword_tag> void set_(argument_pack const &, keyword_tag, mpl::false_); BOOST_CNV_PARAM_SET(locale); BOOST_CNV_PARAM_SET(precision); BOOST_CNV_PARAM_SET(width); BOOST_CNV_PARAM_SET(fill); BOOST_CNV_PARAM_SET(uppercase); BOOST_CNV_PARAM_SET(skipws); BOOST_CNV_PARAM_SET(adjust); BOOST_CNV_PARAM_SET(base); BOOST_CNV_PARAM_SET(notation); template<typename string_type, typename out_type> void str_to(cnv::range< string_type >, optional< out_type > &) const; template<typename string_type, typename in_type> void to_str(in_type const &, optional< string_type > &) const; };
basic_stream
public member functionsBOOST_CNV_STRING_ENABLE(type const & v, optional< string_type > & s) const;
BOOST_CNV_STRING_ENABLE(string_type const & s, optional< type > & r) const;
template<typename type> void operator()(char_type const * s, optional< type > & r) const;
template<typename type> void operator()(stdstr_type const & s, optional< type > & r) const;
template<typename manipulator> boost::disable_if< boost::parameter::is_argument_pack< manipulator >, this_type & >::type operator()(manipulator m);
this_type & operator()(manipulator_type m);
this_type & operator()(std::locale const & l);
template<typename argument_pack> std::enable_if< boost::parameter::is_argument_pack< argument_pack >::value, this_type & >::type operator()(argument_pack const & arg);
template<typename string_type, typename in_type> void to_str(in_type const & value_in, boost::optional< string_type > & string_out) const;
template<typename string_type, typename out_type> void str_to(boost::cnv::range< string_type > string_in, boost::optional< out_type > & result_out) const;
basic_stream
private member functionstemplate<typename argument_pack, typename keyword_tag> void set_(argument_pack const &, keyword_tag, mpl::false_);
BOOST_CNV_PARAM_SET(locale);
BOOST_CNV_PARAM_SET(precision);
BOOST_CNV_PARAM_SET(width);
BOOST_CNV_PARAM_SET(fill);
BOOST_CNV_PARAM_SET(uppercase);
BOOST_CNV_PARAM_SET(skipws);
BOOST_CNV_PARAM_SET(adjust);
BOOST_CNV_PARAM_SET(base);
BOOST_CNV_PARAM_SET(notation);
template<typename string_type, typename out_type> void str_to(cnv::range< string_type >, optional< out_type > &) const;
template<typename string_type, typename in_type> void to_str(in_type const &, optional< string_type > &) const;