CompositeJoiner allows classes that inherit from various SpecializedForAspect types to be inherited by a single derived class.
More...
#include <CompositeJoiner.hpp>
|
| CompositeJoiner ()=default |
| Default constructor. More...
|
|
virtual | ~CompositeJoiner ()=default |
|
template<typename Base1Arg , typename... Base2Args> |
| CompositeJoiner (Base1Arg &&arg1, Base2Args &&... args2) |
| This constructor allows one argument to be passed to the Base1 constructor and arbitrarily many arguments to be passed to the Base2 constructor. More...
|
|
template<typename Base1Arg > |
| CompositeJoiner (Base1Arg &&arg1, NoArgTag) |
| This constructor passes one argument to the Base1 constructor and no arguments to the Base2 constructor. More...
|
|
template<typename... Base2Args> |
| CompositeJoiner (NoArgTag, Base2Args &&... args2) |
| This constructor passes no arguments to the Base1 constructor and arbitrarily many arguments to the Base2 constructor. More...
|
|
template<class T > |
bool | has () const |
|
template<class T > |
T * | get () |
|
template<class T > |
const T * | get () const |
|
template<class T > |
void | set (const T *aspect) |
|
template<class T > |
void | set (std::unique_ptr< T > &&aspect) |
|
template<class T , typename ... Args> |
T * | createAspect (Args &&... args) |
|
template<class T > |
void | removeAspect () |
|
template<class T > |
std::unique_ptr< T > | releaseAspect () |
|
template<class Base1, class Base2>
class dart::common::CompositeJoiner< Base1, Base2 >
CompositeJoiner allows classes that inherit from various SpecializedForAspect types to be inherited by a single derived class.
This class solves the diamond-of-death problem for multiple SpecializedForAspect inheritance.
◆ CompositeJoiner() [1/4]
template<class Base1 , class Base2 >
◆ ~CompositeJoiner()
template<class Base1 , class Base2 >
◆ CompositeJoiner() [2/4]
template<class Base1 , class Base2 >
template<typename Base1Arg , typename... Base2Args>
This constructor allows one argument to be passed to the Base1 constructor and arbitrarily many arguments to be passed to the Base2 constructor.
◆ CompositeJoiner() [3/4]
template<class Base1 , class Base2 >
template<typename Base1Arg >
This constructor passes one argument to the Base1 constructor and no arguments to the Base2 constructor.
◆ CompositeJoiner() [4/4]
template<class Base1 , class Base2 >
template<typename... Base2Args>
This constructor passes no arguments to the Base1 constructor and arbitrarily many arguments to the Base2 constructor.
◆ createAspect()
template<class Base1 , class Base2 >
template<class T , typename ... Args>
◆ get() [1/2]
template<class Base1 , class Base2 >
template<class T >
◆ get() [2/2]
template<class Base1 , class Base2 >
template<class T >
◆ has()
template<class Base1 , class Base2 >
template<class T >
◆ isSpecializedFor()
template<class Base1 , class Base2 >
template<class T >
◆ releaseAspect()
template<class Base1 , class Base2 >
template<class T >
◆ removeAspect()
template<class Base1 , class Base2 >
template<class T >
◆ set() [1/2]
template<class Base1 , class Base2 >
template<class T >
◆ set() [2/2]
template<class Base1 , class Base2 >
template<class T >