C++ 在C+中传递函数类型的参数意味着什么+;?

C++ 在C+中传递函数类型的参数意味着什么+;?,c++,function,types,arguments,C++,Function,Types,Arguments,回到前面,我发现可以编写一个C++函数,该函数使用函数类型的参数(不>强>函数指针类型!)。例如,这里有一个函数,它接受一个接受并返回double的回调函数: void MyFunction(double function(double)); 我的问题是拥有函数类型的变量意味着什么,因为您不能在任何其他上下文中声明一个变量。从语义上讲,它与函数指针或函数引用有何不同?函数指针和函数类型的变量之间有重要区别吗?就像void f(int x[])与void f(int*x)一样,以下两个是相同的:

回到前面,我发现可以编写一个C++函数,该函数使用函数类型的参数(<强>不>强>函数指针类型!)。例如,这里有一个函数,它接受一个接受并返回double的回调函数:

void MyFunction(double function(double));
我的问题是拥有函数类型的变量意味着什么,因为您不能在任何其他上下文中声明一个变量。从语义上讲,它与函数指针或函数引用有何不同?函数指针和函数类型的变量之间有重要区别吗?

就像
void f(int x[])
void f(int*x)
一样,以下两个是相同的:

void MyFunction(double function(double)); 
void MyFunction(double (*function)(double)); 
或者,在官方语言(C++03 8.3.5/3)中,在确定函数类型时

在确定每个参数的类型后,“数组of
T
”或“函数返回
T
”类型的任何参数分别调整为“指针指向
T
”或“指针指向函数返回
T


我以前从未见过这样的C++。据我所知,C++中是不可能的。你能举个例子吗?这是数组速记
arrData==&arrData[0]
之类的东西之一,但自从
boost::function
出现在seen上之后,我就没见过它了,当lambda函数完全受支持时,这也会改变一切。太棒了!这完美地回答了我的问题。很少有情况下ISO标准清晰易懂。