Support for creating Regular, runtime-polymorphic objects with value semantics.
Classes |
struct | copyable |
| "Handle" class used in poly<copyable> implementation. More...
|
struct | optimized_storage_type< ConcreteType, Interface > |
| Authors of adobe::poly concept representatives must derive their instance class from this. See of adobe::poly_placeable_instance, for example. This metafunction is used in the implementation of the small storage optimization. More...
|
class | poly< F > |
| adobe::poly<foo> will be a runtime polymorphic value type wrapper modelling a concept represented by foo More...
|
struct | poly_base< I, Instance > |
| Authors of a Concept representative F, intended as a template parameter to adobe::poly, will inherit from adobe::poly_base. The first template parameter for adobe::poly_base provides the virtual interface for the concept representative. The second template parameter for adobe::poly_base must inherit from the Concept interface representative. The author's third duty is to provide forwarding functions in a their Concept representative. See the placeable_concept.hpp header file for details. More...
|
struct | poly_copyable_instance< T > |
| Implementation of a trivial poly interface in terms of types modeling Copyable . Used in poly<copyable> implementation. More...
|
struct | poly_copyable_interface |
| Abstract interface providing signatures needed to implement "handle" objects modeling a Value (Copyable/Movable) concept. Authors of adobe::poly classes must derive their interfaces from this. See adobe::poly_placeable_interface for an example. More...
|
struct | poly_regular_instance< T > |
| Implementation of a trivial poly interface in terms of types modeling regular . Used in poly<regular> implementation. More...
|
struct | poly_regular_interface |
| Virtual interface for RegularConcept. Used in poly<regular> implementation. More...
|
struct | regular |
| "Handle" class used in poly<regular> implementation. More...
|
Functions |
template<class T > |
bool | operator!= (const poly< T > &x, const poly< T > &y) |
template<class J , template< typename > class K> |
boost::enable_if
< implementation::has_equals
< J >, bool >::type | operator== (const poly_base< J, K > &x, const poly_base< J, K > &y) |
template<typename T , typename U > |
T | poly_cast (const poly< U > *x) |
template<typename T , typename U > |
T | poly_cast (poly< U > *x) |
template<typename T , typename U > |
T | poly_cast (const poly< U > &x) |
template<typename T , typename U > |
T | poly_cast (poly< U > &x) |