33 #ifndef DART_COMMON_COMPOSITEJOINER_HPP_ 34 #define DART_COMMON_COMPOSITEJOINER_HPP_ 36 #include "dart/common/Composite.hpp" 37 #include "dart/common/Empty.hpp" 43 template <
class... OtherBases>
51 template <
class Base1>
62 template <
class Base1,
class Base2>
79 template <
typename Base1Arg,
typename... Base2Args>
84 template <
typename Base1Arg>
85 CompositeJoiner(Base1Arg&& arg1, NoArgTag);
89 template <
typename... Base2Args>
90 CompositeJoiner(NoArgTag, Base2Args&&... args2);
102 const T*
get()
const;
106 void set(
const T* aspect);
110 void set(std::unique_ptr<T>&& aspect);
113 template <
class T,
typename... Args>
114 T* createAspect(Args&&... args);
122 std::unique_ptr<T> releaseAspect();
126 static constexpr
bool isSpecializedFor();
131 template <
class Base1,
class Base2,
class... OtherBases>
133 :
public CompositeJoiner<Base1, CompositeJoiner<Base2, OtherBases...> >
149 template <
typename... Args>
152 virtual ~CompositeJoiner() =
default;
158 #include "dart/common/detail/CompositeJoiner.hpp" 160 #endif // DART_COMMON_COMPOSITEJOINER_HPP_ Definition: Aspect.cpp:40
Terminator for the variadic template.
Definition: CompositeJoiner.hpp:44