如何使用别名声明模板化函数 typedef?
How do I template a function typedef using an alias declaration?
我只是想转换我当前的 typedef:
typedef void (Foo::*CallbackName)(int arg);
进入函数别名,我看起来像:
template <class T>
using T_CallbackName = void(T::*CallbackName)(int arg);
这是正确的吗?别名声明看起来很简单,但函数 typedef 的语法很奇怪,我不清楚如何模板化它们。
简单:
template <class C>
using T_CallbackName = void (C::*)(int);
如果你愿意,你可以让 arg
,但是 CallbackName
应该被删除。
顺便说一句,你的第一个 typedef
可以写成:
using CallbackName = void (Foo::*)(int);
你也可以使用auto来定义函数指针:
const auto T_CallbackName = Foo::CallbackName
或函数参考
auto& T_CallbackName = Foo::CallbackName
请注意,即使您更改了回调参数的数量,这仍然有效
我只是想转换我当前的 typedef:
typedef void (Foo::*CallbackName)(int arg);
进入函数别名,我看起来像:
template <class T>
using T_CallbackName = void(T::*CallbackName)(int arg);
这是正确的吗?别名声明看起来很简单,但函数 typedef 的语法很奇怪,我不清楚如何模板化它们。
简单:
template <class C>
using T_CallbackName = void (C::*)(int);
如果你愿意,你可以让 arg
,但是 CallbackName
应该被删除。
顺便说一句,你的第一个 typedef
可以写成:
using CallbackName = void (Foo::*)(int);
你也可以使用auto来定义函数指针:
const auto T_CallbackName = Foo::CallbackName
或函数参考
auto& T_CallbackName = Foo::CallbackName
请注意,即使您更改了回调参数的数量,这仍然有效