Всем привет.
Есть ли способ сгенерировать этот ужас с помощью Boost.Preprocessor?
template<typename ResultType, typename ParamClass, typename ParamType, typename ParamClass2, typename ParamType2, typename ParamClass3, typename ParamType3>
ResultType QueryParam(ParamType (ParamClass::*param), ParamType2 (ParamClass2::*param2), ParamType3 (ParamClass3::*param3), typename const Identity<ResultType>::type& defaultValue = ResultType()) const
{
const ParamType* paramPtr1 = QueryParamPtr(param);
if( paramPtr1 )
{
return QueryDataDef<ResultType>(paramPtr1, defaultValue);
}
const ParamType2* paramPtr2 = QueryParamPtr(param2);
if( paramPtr2 )
{
return QueryDataDef<ResultType>(paramPtr2, defaultValue);
}
const ParamType3* paramPtr3 = QueryParamPtr(param3);
if( paramPtr3 )
{
return QueryDataDef<ResultType>(paramPtr3, defaultValue);
}
return defaultValue;
}
Я думаю тенденция тут видна.
А так-же хотелось бы посмотреть как бы это выглядело с вариадиками.
Спасибо!