33 #ifndef DART_COMMON_DETAIL_COMPOSITEJOINER_HPP_
34 #define DART_COMMON_DETAIL_COMPOSITEJOINER_HPP_
43 template <
class Base1,
class Base2>
44 template <
typename Base1Arg,
typename... Base2Args>
46 Base1Arg&& arg1, Base2Args&&... args2)
47 : Base1(
std::forward<Base1Arg>(arg1)),
48 Base2(
std::forward<Base2Args>(args2)...)
54 template <
class Base1,
class Base2>
55 template <
typename Base1Arg>
58 : Base1(
std::forward<Base1Arg>(arg1)),
65 template <
class Base1,
class Base2>
66 template <
typename... Base2Args>
70 Base2(
std::forward<Base2Args>(args2)...)
88 template <class Base1, class Base2>
89 template <class T, typename ...Args>
92 if(Base1::template isSpecializedFor<T>())
93 return Base1::template createAspect<T, Args...>(std::forward<Args>(args)...);
95 return Base2::template createAspect<T, Args...>(std::forward<Args>(args)...);
99 template <
class Base1,
class Base2>
103 return (Base1::template isSpecializedFor<T>()
104 || Base2::template isSpecializedFor<T>());
108 template <
class Base1,
class Base2,
class... OtherBases>
109 template <
typename... Args>
113 std::forward<Args>(args)...)
#define DETAIL_DART_COMMON_TEMPLATEJOINERDISPATCH_IMPL(ReturnType, ClassName, Function, Suffix, Args)
Definition: TemplateJoinerDispatchMacro.hpp:53
Terminator for the variadic template.
Definition: CompositeJoiner.hpp:45
NoArgTag
Used to tag arguments as blank for in variadic joiner classes such as common::CompositeJoiner and dyn...
Definition: Empty.hpp:45
Definition: BulletCollisionDetector.cpp:63
Definition: SharedLibraryManager.hpp:43