Vector.push_back(std::function<void()>); 绕过编译器要求表达式的方法

基因组

如果我写:

Vector.push_back(std::function<void()>);

编译器试图将其解释为表达式并失败..我的解决方法是:

std::function<void()> fun;
Vector.push_back(fun);

有没有办法在一行中解决这个问题?

狂暴的

原因与此相同:

std::vector<int> vec;
vec.push_back(int);

不会工作。你需要一个对象,而不是一个类型:

std::vector<int> vec;
vec.push_back(int{}); // notice the {}

同样,您的:

Vector.push_back(std::function<void()>);

试图推送一个类型,而不是一个对象。以同样的方式创建一个:

Vector.push_back(std::function<void()>{}); // notice the {}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有返回类型为void Lambda表达式可与包装编译,但不能与原始的编译

三元表达式有时会绕过编译器检查验证

是否存在将java.util.function,Consumer <T>转换为java.util.function.Function <T,Void>的标准方法

void * function()是指向函数的指针还是返回void *的函数?

sizeof(void())是合法表达式吗?

为什么lambda表达式不需要<functional>,而function <void()>却需要?

C ++ 14是否要求delete表达式必须调用`void operator :: delete(void *,std :: size_t)`而不是`void :: operator delete(void *)`?

如何使用std :: function <void(void)>调用方法

std :: declval <void>()是有效的表达式吗?

如何将std :: vector <vector>转换为void *

异常的编译器错误强制转换为void?

reinterpret_cast std :: function *到void *和从void *

无法将'std :: function <void *()>'转换为'void *(*)(void *)'

带有警告级别3的int的std :: vector push_back的编译器警告

无效使用void表达式回调函数

C ++错误:[对二进制表达式无效的操作数('std :: map <int,std :: function <void()>,std :: less <int> ...]

有没有一种方法可以将void(*)(uint32_t,void(*)(uint32_t))转换为std :: function <void(uint32_t,std :: function <void(uint32_t)>)>?

在C ++ std :: function上下文中无效使用void表达式

此表达式的类型为“ void”,不能使用

在不同的编译器上转换为void **

异步void Lambda表达式

将std :: function <void()>转换为void(*)()

方法参数(void)与无void声明(编译器错误)

无法识别的表达式a [href = javascript:void(0)]

无效使用void表达式-C ++

为什么用“ std :: vector <std :: string>&”代替“ void”?

转换 void* 缓冲区时无效使用 void 表达式

std::vector<std::pair<int, float>> 和 void 错误

错误:在参数中无效使用 void 表达式