2
0
mirror of https://github.com/boostorg/convert.git synced 2026-01-30 19:52:17 +00:00
Files
convert/doc/convert_ref.xml

64 lines
10 KiB
XML

<?xml version="1.0" standalone="yes"?>
<library-reference id="convert_reference"><title>Convert Reference</title><header name="boost/convert/api.hpp"><namespace name="boost"><struct name="convert"><template>
<template-type-parameter name="TypeOut"/>
</template><struct name="algorithm_helper"><template>
<template-type-parameter name="TypeIn"/>
<template-type-parameter name="Converter"/>
</template><typedef name="this_type"><type><classname>algorithm_helper</classname></type></typedef><method-group name="public member functions"><method name="value_or" cv=""><type>with_fallback</type><template>
<template-type-parameter name="FallbackType"/>
</template><parameter name=""><paramtype>FallbackType const &amp;</paramtype></parameter></method><method name="operator()" cv=""><type>TypeOut</type><parameter name="value_in"><paramtype>TypeIn const &amp;</paramtype></parameter></method></method-group><constructor><parameter name="cnv"><paramtype>Converter const &amp;</paramtype></parameter></constructor></struct><struct-specialization name="algorithm_helper"><template>
<template-type-parameter name="TypeIn"/>
<template-type-parameter name="Converter"/>
</template><specialization><template-arg>TypeIn</template-arg><template-arg>Converter</template-arg></specialization><typedef name="this_type"><type><classname>boost::convert</classname>&lt; TypeOut &gt;::<classname>algorithm_helper</classname>&lt; TypeIn, Converter &gt;::with_fallback</type></typedef><typedef name="base_type"><type><classname>boost::convert</classname>&lt; TypeOut &gt;::<classname>algorithm_helper</classname>&lt; TypeIn, Converter &gt;</type></typedef><data-member name="fallback_"><type>out_type</type></data-member><method-group name="public member functions"><method name="with_fallback" cv=""><type/><parameter name="ah"><paramtype><classname>base_type</classname> const &amp;</paramtype></parameter><parameter name="fallback"><paramtype>TypeOut const &amp;</paramtype></parameter></method><method name="operator()" cv=""><type>TypeOut</type><parameter name="value_in"><paramtype>TypeIn const &amp;</paramtype></parameter></method></method-group></struct-specialization><struct name="result"><typedef name="this_type"><type><classname>result</classname></type></typedef><typedef name="safebool"><type><classname>boost::safebool</classname>&lt; <classname>result</classname> &gt;</type></typedef><method-group name="public member functions"><method name="operator!" cv="const"><type>bool</type></method><method name="conversion-operator" cv="const"><type>typename safebool::type</type></method><method name="value" cv="const"><type>out_type const &amp;</type></method><method name="value_or" cv="const"><type>out_type</type><template>
<template-type-parameter name="FallbackType"/>
</template><parameter name="fallback"><paramtype>FallbackType const &amp;</paramtype></parameter></method></method-group><constructor><parameter name="v"><paramtype>out_type const &amp;</paramtype></parameter></constructor><method-group name="private member functions"><method name="operator()" cv=""><type><classname>this_type</classname> &amp;</type><parameter name="good"><paramtype>bool</paramtype></parameter></method></method-group></struct><typedef name="this_type"><type><classname>boost::convert</classname>&lt; TypeOut &gt;</type></typedef><typedef name="out_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type><classname>this_type::result</classname></type></typedef><method-group name="public static functions"><method name="create_storage" cv=""><type>static out_type</type></method><method name="from" cv=""><type>static <classname>result_type</classname></type><template>
<template-type-parameter name="TypeIn"/>
<template-type-parameter name="Converter"/>
</template><parameter name="value_in"><paramtype>TypeIn const &amp;</paramtype></parameter><parameter name="converter"><paramtype>Converter const &amp;</paramtype></parameter></method><method name="from" cv=""><type>static <classname>algorithm_helper</classname>&lt; TypeIn, Converter &gt;</type><template>
<template-type-parameter name="TypeIn"/>
<template-type-parameter name="Converter"/>
</template><parameter name="cnv"><paramtype>Converter const &amp;</paramtype></parameter></method></method-group></struct></namespace></header><header name="boost/convert/lexical_cast_converter.hpp"><namespace name="boost"><struct name="lexical_cast_converter"><method-group name="public member functions"><method name="convert" cv="const"><type>bool</type><template>
<template-type-parameter name="TypeOut"/>
<template-type-parameter name="TypeIn"/>
</template><parameter name="value_in"><paramtype>TypeIn const &amp;</paramtype></parameter><parameter name="result_out"><paramtype>TypeOut &amp;</paramtype></parameter></method></method-group></struct></namespace></header><header name="boost/convert/safebool.hpp"><namespace name="boost"><struct name="safebool"><template>
<template-type-parameter name="T"/>
</template><purpose>Generalization of the Safe-Bool Technique. </purpose><description><para>An implicit conversion to bool (operator bool() const) is very much idiomatic and is often deployed in constructs like "if (foo)" and "if (!foo)" (with no explicit op!() defined). However, sadly, implementing "operator bool()" is *wrong* as that conversion kicks in far too often and unexpectedly. Like in "foo == 1", "foo+1", "1+foo" or potentially during lexical_cast&lt;string&gt;(foo) (if there are no op&gt;&gt;() and op&lt;&lt;() defined). Consequently, that "implicit
conversion to bool" functionality has to be implemented in an indirect and somewhat awkward way via an implicit conversion to some other type. The best type for the purpose appears to be a pointer to a member function. For more see the chapter 7.7 in Alexandrescu's "Modern C++ Design" and the article at <ulink url="http://www.artima.com/cppsource/safebool.html">http://www.artima.com/cppsource/safebool.html</ulink> by Bjorn Karlsson.<sbr/>
<sbr/>
Deployment: <programlisting> struct Foo
{ ...
operator safebool&lt;Foo&gt;::type() const { return safebool&lt;Foo&gt;(condition); }
};
template&lt;class T&gt;
struct Zoo // for a template class
{ ...
operator typename safebool&lt;Zoo&gt;::type() const { return safebool&lt;Zoo&gt;(condition); }
};
template&lt;class T&gt;
struct Zoo // with convenience typedefs
{ ...
typedef safebool&lt;Zoo&gt; safebool;
typedef typename safebool::type safebool_type;
operator safebool_type() const { return safebool(condition); }
};
</programlisting> safebool needs to be a template to make the returned safebool&lt;Foo&gt;::type unique. Without it different classes would return the same safebool::type that would make possible relational operators between unrelated types. Like <programlisting> struct Foo { operator safebool::type() const { return safebool(...); }};
struct Zoo { operator safebool::type() const { return safebool(...); }};
Foo foo;
Zoo zoo;
if (foo == zoo) Valid (but wrong) comparison between unrelated types.
</programlisting> </para></description><typedef name="type"><type>void(safebool::*</type></typedef><method-group name="public member functions"><method name="conversion-operator" cv="const"><type>type</type></method><method name="operator!" cv="const"><type>bool</type></method></method-group><constructor specifiers="explicit"><parameter name="v"><paramtype>bool</paramtype></parameter></constructor><method-group name="private member functions"><method name="true_" cv="const"><type>void</type></method></method-group></struct></namespace></header><header name="boost/convert/sstream_converter.hpp"><namespace name="boost"><struct name="basic_stringstream_converter"><template>
<template-type-parameter name="Char"/>
</template><typedef name="char_type"><type>Char</type></typedef><typedef name="this_type"><type><classname>basic_stringstream_converter</classname></type></typedef><typedef name="stream_type"><type>std::basic_stringstream&lt; char_type &gt;</type></typedef><typedef name="manipulator_type"><type>std::ios_base &amp;(*</type></typedef><method-group name="public member functions"><method name="convert" cv="const"><type><emphasis>unspecified</emphasis></type><template>
<template-type-parameter name="StringOut"/>
<template-type-parameter name="TypeIn"/>
</template><parameter name="value_in"><paramtype>TypeIn const &amp;</paramtype></parameter><parameter name="result_out"><paramtype>StringOut &amp;</paramtype></parameter></method><method name="convert" cv="const"><type><emphasis>unspecified</emphasis></type><template>
<template-type-parameter name="TypeOut"/>
<template-type-parameter name="StringIn"/>
</template><parameter name="value_in"><paramtype>StringIn const &amp;</paramtype></parameter><parameter name="result_out"><paramtype>TypeOut &amp;</paramtype></parameter></method><method name="convert" cv="const"><type><emphasis>unspecified</emphasis></type><template>
<template-type-parameter name="StringOut"/>
<template-type-parameter name="StringIn"/>
</template><parameter name="value_in"><paramtype>StringIn const &amp;</paramtype></parameter><parameter name="result_out"><paramtype>StringOut &amp;</paramtype></parameter></method><method name="operator()" cv=""><type><classname>this_type</classname> &amp;</type><parameter name="locale"><paramtype>std::locale const &amp;</paramtype></parameter></method><method name="operator()" cv=""><type><classname>this_type</classname> &amp;</type><parameter name="m"><paramtype>manipulator_type</paramtype></parameter></method><method name="operator()" cv=""><type><classname>this_type</classname> &amp;</type><template>
<template-type-parameter name="Manipulator"/>
</template><parameter name="m"><paramtype>Manipulator</paramtype></parameter></method></method-group><constructor/></struct><typedef name="cstringstream_converter"><type><classname>basic_stringstream_converter</classname>&lt; char &gt;</type></typedef><typedef name="wstringstream_converter"><type><classname>basic_stringstream_converter</classname>&lt; wchar_t &gt;</type></typedef></namespace></header><header name="boost/convert/string_sfinae.hpp"><para>Defines various string-related type checks </para><namespace name="boost"/></header><header name="boost/convert/workarounds.hpp"/></library-reference>