template<typename R, typename... Types>
using Function = R(*)(Types...);
我在dev.to上看到了这行
这种类型的别名声明R(*)(Types...)
在我看来很奇怪,因为没有函数名指针。
这是什么,如何实现此模板?
答案 0 :(得分:3)
这种类型的别名声明
R(*)(Types...)
在我看来很奇怪,因为没有函数名指针。
没有名称,因为它应该是一种类型。举一个简单的例子:
using IPtr = int*;
RHS只是一种类型。使用
using IPtr = int* x;
这是什么,如何实现此模板?
它允许使用简单直观的语法声明和定义函数指针。
您可以使用
int foo(double) { ... }
int bar(double) { ... }
Function<int, double> ptr = &foo;
// Use ptr
// Change where ptr points to
ptr = &bar;
// Use ptr more
答案 1 :(得分:2)
我发现在https://en.cppreference.com/w/cpp/language/type_alias
上使用了示例// type alias, identical to
// typedef void (*func)(int, int);
using func = void (*) (int, int);
// the name 'func' now denotes a pointer to function:
void example(int, int) {}
func f = example;
这行是针对实际问题的实现;
template<typename R, typename... Types>
using Function = R(*)(Types...);
bool example(int&a){
cout<< a;
return false;
}
int main()
{
int a = 8;
Function<bool, int&> eFnc = example;
eFnc(a);
return 0;
}