blob: f15a69c2a09ef8fe7cb71607aa114885f211f36f [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<header name="boost/proto/deep_copy.hpp">
<para>Replace all nodes stored by reference by nodes stored by value.</para>
<namespace name="boost">
<namespace name="proto">
<namespace name="result_of">
<!-- proto::result_of::deep_copy -->
<struct name="deep_copy">
<template>
<template-type-parameter name="Expr"/>
</template>
<purpose>A metafunction for calculating the return type of <computeroutput>
<functionname alt="proto::deep_copy">proto::deep_copy()</functionname></computeroutput>.</purpose>
<description>
<para>
A metafunction for calculating the return type of <computeroutput>
<functionname alt="proto::deep_copy">proto::deep_copy()</functionname></computeroutput>. The type
parameter <computeroutput>Expr</computeroutput> should be the type of a Proto expression tree.
It should not be a reference type, nor should it be cv-qualified.
</para>
</description>
<typedef name="type">
<type><emphasis>unspecified</emphasis></type>
</typedef>
</struct>
</namespace>
<namespace name="functional">
<!-- proto::functional::deep_copy -->
<struct name="deep_copy">
<inherit>
<type><classname>proto::callable</classname></type>
</inherit>
<purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type for deep-copying Proto
expression trees.</purpose>
<description>
<para>
A <conceptname>PolymorphicFunctionObject</conceptname> type for deep-copying Proto expression trees.
When a tree is deep-copied, all internal nodes and terminals held by reference are instead held by value.
The only exception is function references, which continue to be held by reference.
</para>
</description>
<struct-specialization name="result">
<template>
<template-type-parameter name="This"/>
<template-type-parameter name="Expr"/>
</template>
<specialization>
<template-arg>This(Expr)</template-arg>
</specialization>
<inherit>
<type><classname>result_of::deep_copy</classname>&lt;Expr&gt;</type>
</inherit>
</struct-specialization>
<method-group name="public member functions">
<method name="operator()" cv="const">
<type><classname>result_of::deep_copy</classname>&lt;Expr&gt;::type</type>
<template>
<template-type-parameter name="Expr"/>
</template>
<parameter name="expr">
<paramtype>Expr const &amp;</paramtype>
</parameter>
<purpose>Deep-copies a Proto expression tree, turning all nodes and terminals held by
reference into ones held by value.</purpose>
</method>
</method-group>
</struct>
</namespace>
<!-- proto::deep_copy() -->
<function name="deep_copy">
<type>typename <classname>proto::result_of::deep_copy</classname>&lt;Expr&gt;::type</type>
<template>
<template-type-parameter name="Expr"/>
</template>
<parameter name="expr">
<paramtype>Expr const &amp;</paramtype>
</parameter>
<purpose>A function for deep-copying Proto expression trees. </purpose>
<description>
<para>
A function for deep-copying Proto expression trees. When a tree is deep-copied, all internal
nodes and terminals held by reference are instead held by value.</para>
</description>
<notes>
<para>
Terminals of reference-to-function type are left unchanged.
</para>
<para>
Equivalent to <computeroutput><classname>proto::functional::deep_copy</classname>()(expr)
</computeroutput>.
</para>
</notes>
</function>
</namespace>
</namespace>
</header>