C ++, как мне создать замыкания с Variadi c? - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь переписать этот python код в его эквивалент pybind c ++. Но я не могу заставить мой код на С ++ принять неизвестное количество аргументов

python:

def primitive(f_raw):
    def f_wrapped(*args, **kwargs):
            return f_raw(*args, **kwargs)
    return f_wrapped

c ++:

template <class... T>
std::function<T(T...)> primative(std::function<T(T...)> callable)
{
  return [=](T... params){
    return callable(params...);
  };
}

1 Ответ

0 голосов
/ 15 марта 2020

Здесь необходимо использовать 2 параметра шаблона

template <class T, class... Ts>
std::function<T(Ts...)> primative(std::function<T(Ts...)> callable)
{
  return [=](Ts... params){
    return callable(params...);
  };
}

Ts... - это пакет параметров , он может содержать любые типы.

...