C++ void f(void())`是什么意思?

C++ void f(void())`是什么意思?,c++,function-pointers,C++,Function Pointers,考虑以下代码段: void f(void()); void()作为参数类型的确切含义是什么? 如果它是(可能是)函数指针或函数引用,它是合法代码吗 据我所知,我不能将函数指针定义为: void(f)() = &g; 在处理函数的参数时,为什么要接受它?我第一次遇到它时,有一段时间很困惑 我已经习惯了以下函数具有相同类型的事实: void f(int[]); void f(int*); 类似的情况也适用于函数指针 如工作草案(重点矿山)第1部分所述: 函数的类型使用以下规则确定。[…

考虑以下代码段:

void f(void());
void()
作为参数类型的确切含义是什么?
如果它是(可能是)函数指针或函数引用,它是合法代码吗

据我所知,我不能将函数指针定义为:

void(f)() = &g;

在处理函数的参数时,为什么要接受它?

我第一次遇到它时,有一段时间很困惑

我已经习惯了以下函数具有相同类型的事实:

void f(int[]);
void f(int*);
类似的情况也适用于函数指针

如工作草案(重点矿山)第1部分所述:

函数的类型使用以下规则确定。[…]在确定每个参数的类型后,类型为“T数组”或功能类型为T的的任何参数调整为“指向T的指针”。[……]

因此,以下功能:

void f(void());
具有相同类型的:

void f(void(*)());
因此,以下定义相同:

void f(void(g)());
void f(void(*g)());

分享一些我在这个网站上找不到的东西,然后在没有评论的情况下收到反对票,并决定删除这个问题,这一直是我的荣幸。第一次有人问同样的问题时,我会回来的。没问题。我想鼓励你删除这个。完全理解你的决定,我不能打电话询问问题和答案的准确性,因为我不知道C++,但是我们需要让人们克服与自我回答相关的污名。你的电话。@undo让我们看看是否值得继续坚持自答问题。不管怎样,我都会说不。分享这样的知识总是一种乐趣(不幸的是,具有讽刺意味)。至少对否决票发表评论有助于了解这个答案的错误并改进它。不管怎样,我认为这是一场失败的战斗。