33#ifndef DART_COMMON_DETAIL_COMPOSITEJOINER_HPP_
34#define DART_COMMON_DETAIL_COMPOSITEJOINER_HPP_
43template <
class Base1,
class Base2>
44template <
typename Base1Arg,
typename... Base2Args>
46 Base1Arg&& arg1, Base2Args&&... args2)
47 : Base1(
std::forward<Base1Arg>(arg1)),
48 Base2(
std::forward<Base2Args>(args2)...)
54template <
class Base1,
class Base2>
55template <
typename Base1Arg>
58 : Base1(
std::forward<Base1Arg>(arg1)),
65template <
class Base1,
class Base2>
66template <
typename... Base2Args>
70 Base2(
std::forward<Base2Args>(args2)...)
88template <class Base1, class Base2>
89template <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)...);
99template <
class Base1,
class Base2>
103 return (Base1::template isSpecializedFor<T>()
104 || Base2::template isSpecializedFor<T>());
108template <
class Base1,
class Base2,
class... OtherBases>
109template <
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