Size: a a a

IT KPI C/C++ ХВ (не UB)

2020 October 15

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
А в шаблон неизвестно, что за функционал пришел
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
template<typename Tf, typename ...Args, int ...Ints>
auto apply_f(Tf f, std::tuple<Args...> t, IntList<Ints...>)
{
 return f(std::get<Ints...>(t), Args...);
}
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Анна Хашпер
А в шаблон неизвестно, что за функционал пришел
Жди Тиля, он тут заведующий по шаблонам
источник

A

András in IT KPI C/C++ ХВ (не UB)
Анна Хашпер
template<typename Tf, typename ...Args, int ...Ints>
auto apply_f(Tf f, std::tuple<Args...> t, IntList<Ints...>)
{
 return f(std::get<Ints...>(t), Args...);
}
std::get<0> здається має бути
источник

A

András in IT KPI C/C++ ХВ (не UB)
а в решті хз
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
В std::get имеено Ints должны подаваться. Он все индексы содержит
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
Анна Хашпер
auto f = [](int x, double y, double z) { return x + y + z; };
 auto t = std::make_tuple(30, 5.0, 1.6);  // std::tuple<int, double, double>
 auto x = f(std::get<0>(t), std::get<1>(t), std::get<2>(t)); // x = 36.6
а в чем проблема?
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
Не компилится
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
Именно в apply_f проблема
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
что пишет первая ошибка?
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
get не узнаёт
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
Анна Хашпер
template<typename Tf, typename ...Args, int ...Ints>
auto apply_f(Tf f, std::tuple<Args...> t, IntList<Ints...>)
{
 return f(std::get<Ints...>(t), Args...);
}
ну я хз работает л такое вообще, мб в стандартах 17, 20
обычно ты пишешь две функции для рекурсивного разворачивания параметров
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
ну и гет индекс принимает
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
@h4cktill тут шаблоны надо прояснить
источник

TS

Till Schneider in IT KPI C/C++ ХВ (не UB)
Анна Хашпер
template<typename Tf, typename ...Args, int ...Ints>
auto apply_f(Tf f, std::tuple<Args...> t, IntList<Ints...>)
{
 return f(std::get<Ints...>(t), Args...);
}
Ну смотри, давай с простого, что делает  "...", есть представление???
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
Это чтобы показать, что параметров неизвестно сколько
источник

TS

Till Schneider in IT KPI C/C++ ХВ (не UB)
Анна Хашпер
Это чтобы показать, что параметров неизвестно сколько
Эт да, но как это работает? А вот как: он берет и разворачивает аргументы через запятую, ты написала std::get<Ints...>

А значит там будет подобие

std::get<0,1,2,3>
источник

TS

Till Schneider in IT KPI C/C++ ХВ (не UB)
Естественно такого get нет
источник

АХ

Анна Хашпер... in IT KPI C/C++ ХВ (не UB)
Тогда нужен std::forward?
источник