Lumiera  0.pre.03
»edit your freedom«
CopySupport< IFA, BA > Class Template Referenceabstract

#include "lib/polymorphic-value.hpp"

Description

template<class IFA, class BA = IFA>
class lib::polyvalue::CopySupport< IFA, BA >

Interface for active support of copy operations by the embedded client objects.

When inserted into the inheritance chain above the concrete implementation objects, PolymorphicValue is able to perform copy operations trivially and without any dynamic_cast and other run time overhead besides a simple indirection through the VTable. To enable this support, the implementation objects should inherit from CopySupport<Interface> (where Interface would be the public API for all these embedded implementation objects). Alternatively, it's also possible to place this CopySupport API as parent to the public API (it might even be completely absent, but then you'd need to provide an explicit specialisation of the Traits template to tell PolymorphicValue how to access the copy support functions.)

Definition at line 193 of file polymorphic-value.hpp.

Public Member Functions

virtual void cloneInto (void *targetBuffer) const =0
 
virtual void copyInto (IFA &targetBase) const =0
 
+ Inheritance diagram for CopySupport< IFA, BA >:
+ Collaboration diagram for CopySupport< IFA, BA >:

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