[英]Signature of std::function when accepting a variadic lambda
假設我有一個 lambda 和一個類; 我想將 lambda 作為靜態變量分配給類。 我怎么能那樣做?
auto func = [](void* p, auto&&... args) { /* do things */};
class A {
static std::function<void(void*, ???)> f_;
};
我不太確定在問號里放什么。 我試過
class A {
template<class...Arg>
static std::function<void(void*, Arg...)> f_;
};
但是當我分配喜歡
A::f_ = func;
然后它抱怨invalid use of incomplete type 'class std::function<void(void*, Arg ...)>'
請幫忙!
std::function
是一個函數包裝器; 它不是函數模板包裝器。 它必須有一組特定的參數。 例如,您可以為參數列表int, double, float
:
inline static std::function<void(void*, int, float, double)> f_ = func;
我想將 lambda 作為靜態變量分配給類。
然后,也許最好不要將它包裝在std::function
:
inline static decltype(func) f_ = func;
但是當我分配喜歡
A::f_ = func;
然后就是抱怨...
這是因為您沒有將模板參數傳遞給模板變量。 這會起作用:
A::f_<int, double, float> = func;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.