У меня есть следующее (неполный, не работоспособное) определение:Захвата параметр шаблона переменного числа шаблонных аргументов
template<typename T, std::function<Args(Context&)>... Funcs>
struct constructor
{
T construct(Context& ctx)
{
return T(Funcs(ctx)...);
}
};
То, что я хочу, это шаблонный класс - первый аргумент сконструированного типа, и все следующие функции которые будут вызываться, пользовательские шаблоны с std::function
s, которые затем вызывают для создания значений для конструктора типа T
.
Я не вижу возможности заставить этот код работать, а также убирать возвращаемые типы функций. Я хочу, чтобы пользователь использовал его следующим образом:
std::function<int(Context&)> ind = [](Context&) {return 2;};
Constructor<int, ind> c;
// c.construct(...) returns 2 by calling the constructor int(int) with argument
// ind(ctx) - which returns 2.
Я не могу точно сказать, что вы хотите. Можете ли вы объяснить более подробно? –
Я добавил немного информации, возможно, это делает ее более ясной. – WorldSEnder
Да, но ваша 'конструкция', вероятно, предназначена для использования' return'. –