Упаковка, распаковка и сохранение пакета параметров в кортеже в С++ 17C++

Программы на C++. Форум разработчиков
Anonymous
Упаковка, распаковка и сохранение пакета параметров в кортеже в С++ 17

Сообщение Anonymous »

У меня есть указатель функции и параметры, и я хотел бы сохранить их и, возможно, изменить их и вызвать функцию с их помощью.
Однако я видел ответы на некоторые вопросы Я не уверен, как будет выглядеть полное решение, прошу прощения, но я не совсем понимаю пакеты параметров и то, как они связаны с кортежем.
Вот фрагменты моего кода, которые я пытаюсь работать вместе:
У меня есть это, которое по сути просто вызывает функцию, я думаю, что это можно использовать для сохранения вызова в «вызываемой» структуре, чтобы создать интерфейс.
из этого вопроса:
Вызов универсальной функции C++ с параметром varargs

Код: Выделить всё

template
auto call(R(*function)(Args...), Args... args) -> typename std::enable_if::value, R>::type {
return function(args...);
}

template
void call(void (*function)(Args...), Args... args) {
function(args...);
}
И вот эта структура, которая должна хранить параметры и указатель на функцию. (спасибо RaymondChen за указание на то, как это должно быть правильно)

Код: Выделить всё

template
struct callable
{
R(*function)(Args...);
std::tuple params;

callable(Args... argv):
params(std::make_tuple(argv...))
{}
};
Я до сих пор не уверен, как мне на самом деле вызвать функцию с кортежем, насколько я понимаю, мне нужно как-то вернуть кортеж обратно в Args... а затем просто вызвать его .
Чего я пытаюсь достичь:
  • Сохранить звонок, чтобы использовать его позже
  • Создайте свой собственный вызов и заполните его своими параметрами из работающего приложения.
  • Считайте сохраненные параметры, чтобы выполнить некоторую отладку.


Подробнее здесь: https://stackoverflow.com/questions/786 ... le-in-c-17

Вернуться в «C++»