У меня есть шаблонная функция, где шаблонный параметр является функтором. Я хочу сгенерировать некоторые внутренние переменные, специфичные для конкретной функции качества, которые будут использоваться другими шаблонными функциями, вызываемыми из этого функтора. поэтому я экспериментировал с ключевым словом auto, и оно работает
template<typename QF>
float find_optimal_partition_louvain_with_gain(QF quality_function) {
auto internal_variables = gen(quality_function);
float result = do_some_work(internal_variables);
...
return result;
}
struct internals_for_linearised_functor {
double x;
};
internals_for_linearised_functor gen(mynamespace::linearised_function &f) {
linearised_internals internals;
internals.x = 5;
return internals;
}
При использовании auto это нормально компилируется, что приятно. Я хотел бы попытаться остаться в рамках текущего стандарта, чтобы сделать мой код более переносимым. Есть ли способ, которым это может быть обработано с использованием текущего стандарта, или это то, что BOOST_AUTO сможет обработать? Основная функция, которую я пытаюсь достичь, - это генерировать объект на основе типа шаблонного параметра, фактически не передавая тип нового объекта в функцию (то есть выводя его)
Спасибо