n usage of these templates is in function object
adapters, thus allowing them to adapt plain functions as well as
function objects.  You can do this by wherever you would normally
write, for example,

<blockquote><pre>
typename Operation::argument_type
</pre></blockquote>

<p>simply writing

<blockquote><pre>
typename boost::unary_traits&lt;Operation&gt;::argument_type
</pre></blockquote>

<p>instead.

<h3>Additional Types Defined</h3>

<p>In addition to the standard result and argument typedefs, these
trai