std::function
- это функциональная оболочка; это не оболочка шаблона функции. У него должен быть определенный c набор аргументов. Вы можете сделать это, например, для списка аргументов int, double, float
:
inline static std::function<void(void*, int, float, double)> f_ = func;
Я хочу назначить лямбда-класс в качестве переменной stati c.
Тогда, возможно, было бы лучше не оборачивать это в std::function
:
inline static decltype(func) f_ = func;
Но когда я назначаю как
A::f_ = func;
Тогда он жалуется на ...
Это потому, что вы не передали аргументы шаблона в переменную шаблона. Это будет работать:
A::f_<int, double, float> = func;