LBANN  0.103.0
LivermoreBigArtificialNeuralNetworkToolkit
lbann::Cloneable< T, Base > Class Template Reference

Inject polymorphic clone functions into hierarchies. More...

#include <cloneable.hpp>

Inheritance diagram for lbann::Cloneable< T, Base >:
[legend]
Collaboration diagram for lbann::Cloneable< T, Base >:
[legend]

Public Member Functions

std::unique_ptr< T > clone () const
 Return an exception-safe, memory-safe copy of this object. More...
 

Private Member Functions

virtual Cloneabledo_clone_ () const override
 Implement the covariant raw-pointer-based clone operation. More...
 

Detailed Description

template<typename T, typename... Base>
class lbann::Cloneable< T, Base >

Inject polymorphic clone functions into hierarchies.

This class uses CRTP to inject the derived class's clone() function directly into the class and uses the Template Method to virtualize it.

Template Parameters
TThe concrete class to be cloned.
BaseThe base class of T.

Definition at line 94 of file cloneable.hpp.

Member Function Documentation

◆ clone()

template<typename T, typename... Base>
std::unique_ptr<T> lbann::Cloneable< T, Base >::clone ( ) const
inline

Return an exception-safe, memory-safe copy of this object.

Definition at line 98 of file cloneable.hpp.

◆ do_clone_()

template<typename T, typename... Base>
virtual Cloneable* lbann::Cloneable< T, Base >::do_clone_ ( ) const
inlineoverrideprivatevirtual

Implement the covariant raw-pointer-based clone operation.

Definition at line 105 of file cloneable.hpp.


The documentation for this class was generated from the following file: