Replace all nodes stored by reference by nodes stored by value.

A metafunction for calculating the return type of `proto::deep_copy()`.

A metafunction for calculating the return type of `proto::deep_copy()`. The type parameter `Expr` should be the type of a Proto expression tree. It should not be a reference type, nor should it be cv-qualified.

unspecified
`proto::callable`
A PolymorphicFunctionObject type for deep-copying Proto expression trees.

A PolymorphicFunctionObject 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.

This(Expr)
`result_of::deep_copy`<Expr>
`result_of::deep_copy`<Expr>::type `Expr const &` Deep-copies a Proto expression tree, turning all nodes and terminals held by reference into ones held by value.
typename `proto::result_of::deep_copy`<Expr>::type `Expr const &` A function for deep-copying Proto expression trees.

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.

Terminals of reference-to-function type are left unchanged.

Equivalent to ``proto::functional::deep_copy`()(expr)` .