我看惯了语法像这样的函数指针的语法C++与函数参数类型的模板
int (*pointer_name) (float, char *);
void call_function (void (*)(int), int);
在我看到的类型使用这样一些C++ 03功能库:
abc::function<void(*)(int,float)> f;
在C++ 11的std::function
我看到这样
std::function<void(int,float)> f;
存在丢失的012所给出的类型。为什么?
C++ 03 function<T>
具有T
与相应的函数指针是相同的类型。很容易想象实现。
std::function
在C++ 11中得到了核心语言增强的支持。是否扩展了模板参数类型以适应可调用性?
这比教科书指针语法好得多!我想知道为什么我们不这样正常地教... – spraff
@spraff:可能是因为它是一个相对较新的创新,而且大多数教科书的周转率非常低。我仍然看到有人在学习Borland Turbo C++,这种语法似乎有很多麻烦。 – greyfade