30 template<
typename Jo
intModelDerived1,
typename Jo
intModelDerived2,
typename ArgsTmp>
38 InternalVisitorModelAndData<JointModelDerived1, JointModelDerived2, ArgsTmp> visitor(
39 jdata1, jdata2, args);
40 return visitor(jmodel1.derived(), jmodel2.derived());
46 template<
typename,
int>
class JointCollectionTpl,
56 InternalVisitorModelAndData<JointModel, JointModel, ArgsTmp> visitor(jdata1, jdata2, args);
57 return boost::apply_visitor(visitor, jmodel1, jmodel2);
60 template<
typename Jo
intModelDerived1,
typename Jo
intModelDerived2>
67 InternalVisitorModelAndData<JointModelDerived1, JointModelDerived2, NoArg> visitor(
69 return visitor(jmodel1.derived(), jmodel2.derived());
72 template<
typename Scalar,
int Options,
template<
typename,
int>
class JointCollectionTpl>
80 InternalVisitorModelAndData<JointModel, JointModel, NoArg> visitor(jdata1, jdata2);
81 return boost::apply_visitor(visitor, jmodel1, jmodel2);
84 template<
typename Jo
intModelDerived1,
typename Jo
intModelDerived2,
typename ArgsTmp>
90 InternalVisitorModel<ArgsTmp> visitor(args);
91 return visitor(jmodel1.derived(), jmodel2.derived());
97 template<
typename,
int>
class JointCollectionTpl,
104 InternalVisitorModel<ArgsTmp> visitor(args);
105 return boost::apply_visitor(visitor, jmodel1, jmodel2);
108 template<
typename Jo
intModelDerived1,
typename Jo
intModelDerived2>
113 InternalVisitorModel<NoArg> visitor;
114 return visitor(jmodel1.derived(), jmodel2.derived());
117 template<
typename Scalar,
int Options,
template<
typename,
int>
class JointCollectionTpl>
122 InternalVisitorModel<NoArg> visitor;
123 return boost::apply_visitor(visitor, jmodel1, jmodel2);
127 template<
typename Jo
intModel1,
typename Jo
intModel2,
typename ArgType>
128 struct InternalVisitorModelAndData :
public boost::static_visitor<ReturnType>
130 typedef typename JointModel1::JointDataDerived JointData1;
131 typedef typename JointModel2::JointDataDerived JointData2;
133 InternalVisitorModelAndData(JointData1 & jdata1, JointData2 & jdata2, ArgType args)
140 template<
typename Jo
intModelDerived1,
typename Jo
intModelDerived2>
146 &JointVisitorDerived::template algo<JointModelDerived1, JointModelDerived2>,
148 boost::ref(jmodel1.derived()), boost::ref(jmodel2.derived()),
162 template<
typename Jo
intModel1,
typename Jo
intModel2>
163 struct InternalVisitorModelAndData<JointModel1, JointModel2, NoArg>
164 :
public boost::static_visitor<ReturnType>
166 typedef typename JointModel1::JointDataDerived JointData1;
167 typedef typename JointModel2::JointDataDerived JointData2;
169 InternalVisitorModelAndData(JointData1 & jdata1, JointData2 & jdata2)
175 template<
typename Jo
intModelDerived1,
typename Jo
intModelDerived2>
181 &JointVisitorDerived::template algo<JointModelDerived1, JointModelDerived2>,
183 boost::ref(jmodel1.derived()), boost::ref(jmodel2.derived()),
194 template<
typename ArgType,
typename Dummy =
void>
195 struct InternalVisitorModel :
public boost::static_visitor<ReturnType>
197 InternalVisitorModel(ArgType args)
202 template<
typename Jo
intModel1,
typename Jo
intModel2>
208 &JointVisitorDerived::template algo<JointModel1, JointModel2>,
209 bf::append(boost::ref(jmodel1.derived()), boost::ref(jmodel2.derived()), args));
215 template<
typename Dummy>
216 struct InternalVisitorModel<NoArg, Dummy> :
public boost::static_visitor<ReturnType>
218 InternalVisitorModel()
222 template<
typename Jo
intModel1,
typename Jo
intModel2>
227 return JointVisitorDerived::template algo<JointModel1, JointModel2>(
228 jmodel1.derived(), jmodel2.derived());