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>
57 : Base1(
std::forward<Base1Arg>(arg1)), Base2()
63template <
class Base1,
class Base2>
64template <
typename... Base2Args>
66 : Base1(), Base2(
std::forward<Base2Args>(args2)...)
83 (
std::unique_ptr<T> && aspect),
94template <class Base1, class Base2>
95template <class T, typename... Args>
98 if (Base1::template isSpecializedFor<T>())
99 return Base1::template createAspect<T, Args...>(
100 std::forward<Args>(args)...);
102 return Base2::template createAspect<T, Args...>(std::forward<Args>(args)...);
106template <
class Base1,
class Base2>
111 Base1::template isSpecializedFor<T>()
112 || Base2::template isSpecializedFor<T>());
116template <
class Base1,
class Base2,
class... OtherBases>
117template <
typename... Args>
120 std::forward<Args>(args)...)
#define DETAIL_DART_COMMON_TEMPLATEJOINERDISPATCH_IMPL( ReturnType, ClassName, Function, Suffix, Args)
Definition TemplateJoinerDispatchMacro.hpp:54
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:48
Definition BulletCollisionDetector.cpp:65
Definition SharedLibraryManager.hpp:46