为什么不能在函数参数列表中使用匿名对象作为参数?C ++

利昂

例如:

struct test
{};

void thing(test())
{}

int main()
{
   thing(test());
}

这段代码会给我错误;但是,下一个示例不会给我错误:

void thing(int())
{}

int main()
{
   thing(int());
}

我的主要问题是,为什么第一个示例不可行而第二个示例不可行?最终,双方testint有类型,所以我想不出为什么声明的一个匿名对象testthing函数参数列表是不可能的,而声明类型的匿名对象intthing函数的参数列表。

轨道轻度竞赛

可能的; 只是您做错了。

这是一个采用类型为unnamed的参数的函数的声明test

void thing(test);

这是一个函数的声明,该函数带有类型为pointer-to-function-returning-的未命名参数test

void thing(test());

您需要前者,而不是后者。

你的第二个代码示例工程实际上是一个神奇古怪,从一个事实,即所产生int()0是一个有效的空指针常量,它可用于初始化函数指针; 该示例在交换int()其他整数后立即中断,或者如果您在完全兼容的C ++ 14编译器中运行代码(因为C ++ 14这样做是为了使它0不是int()有效的null指针常量)。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么不能在函数参数类型中使用模板参数包作为其模板参数列表,所以不能明确指定

为什么alloca不能在函数参数列表中使用?

为什么我不能在列表中使用匿名函数?

不能在 Python 中使用列表作为函数参数

为什么不能在函数中使用模板别名作为参数并自动推导?

为什么我不能在 Python 中使用变量作为参数来调用这个函数?

为什么我不能在C ++ 11中使用constexpr指针作为模板参数?

为什么不能在C ++中将函数求值作为构造函数参数传递?

不能在函数中使用类作为参数(JScript)

为什么我们不能使用。作为带有%>%的匿名函数中的参数

为什么我不能在Dart 2中使用通用类型作为参数?

Python:为什么不能在方法中使用self.variable作为可选参数?

为什么不能使用给定的参数列表调用以下函数?

不能在匿名方法中使用 in ref 或 out 参数“参数”

c ++不能在构造函数中使用父类型作为参数

为什么我不能在类中使用参数构造函数?

为什么不能在数组内部推送并在javascript的函数参数中使用它?

在内部匿名函数 C# 中使用作为参数传递给函数的对象

为什么函数默认参数不能在C ++中转发?

为什么Array中的函数不能在“参数”上使用?

jQuery:为什么使用匿名函数作为参数?

为什么不总是使用对象参数列表

r:在函数中使用参数列表

在函数中使用传递的参数列表

为什么 Objective-C 不能在受保护的函数指针中使用“self”对象?

在Typescript中使用列表和对象作为参数覆盖函数

为什么不能在具有多个界限的类型参数中使用类型参数?

为什么不能在带丢弃参数的lambda中使用丢弃参数?

为什么不能在线程宏中使用匿名函数?