...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::proto::functional::deep_copy — A PolymorphicFunctionObject type for deep-copying Proto expression trees.
// In header: <boost/proto/deep_copy.hpp> struct deep_copy : proto::callable { // member classes/structs/unions template<typename This, typename Expr> struct result<This(Expr)> : result_of::deep_copy<Expr> { }; // public member functions template<typename Expr> result_of::deep_copy<Expr>::type operator()(Expr const &) const; };
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.
deep_copy
public member functionstemplate<typename Expr> result_of::deep_copy<Expr>::type operator()(Expr const & expr) const;Deep-copies a Proto expression tree, turning all nodes and terminals held by reference into ones held by value.