6940608523
[SVN r76287]
107 lines
4.3 KiB
XML
107 lines
4.3 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
Copyright 2012 Eric Niebler
|
|
|
|
Distributed under 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)
|
|
-->
|
|
<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><Expr></type>
|
|
</inherit>
|
|
</struct-specialization>
|
|
<method-group name="public member functions">
|
|
<method name="operator()" cv="const">
|
|
<type><classname>result_of::deep_copy</classname><Expr>::type</type>
|
|
<template>
|
|
<template-type-parameter name="Expr"/>
|
|
</template>
|
|
<parameter name="expr">
|
|
<paramtype>Expr const &</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><Expr>::type</type>
|
|
<template>
|
|
<template-type-parameter name="Expr"/>
|
|
</template>
|
|
<parameter name="expr">
|
|
<paramtype>Expr const &</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>
|