Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用别名声明为函数typedef创建模板?_C++_Typedef_Using Declaration - Fatal编程技术网

C++ 如何使用别名声明为函数typedef创建模板?

C++ 如何使用别名声明为函数typedef创建模板?,c++,typedef,using-declaration,C++,Typedef,Using Declaration,我只是想转换我当前的typedef: typedef void (Foo::*CallbackName)(int arg); 转换为一个函数别名,如下所示: template <class T> using T_CallbackName = void(T::*CallbackName)(int arg); 模板 使用T_CallbackName=void(T::*CallbackName)(int-arg); 这是正确的吗?别名声明看起来很简单,但函数typedef有奇怪的语

我只是想转换我当前的typedef:

typedef void (Foo::*CallbackName)(int arg);
转换为一个函数别名,如下所示:

template <class T>
using T_CallbackName = void(T::*CallbackName)(int arg); 
模板
使用T_CallbackName=void(T::*CallbackName)(int-arg);
这是正确的吗?别名声明看起来很简单,但函数typedef有奇怪的语法,我不清楚如何对它们进行模板化。

简单地说:

template <class C>
using T_CallbackName = void (C::*)(int);

也可以使用“自动”定义函数指针:

const auto T_CallbackName=Foo::CallbackName

或函数引用

auto&T\u CallbackName=Foo::CallbackName

请注意,即使您更改了回调参数的数量,这仍然有效

using CallbackName = void (Foo::*)(int);