函数指针类型和值的部分类专门化

我正在使用FLTK做与GUI相关的工作,并且它需要将类型的函数void (*fn)( Fl_Widget*, void* )注册为小部件回调。我厌倦了手工创建函数转发器,这些函数将void*s解压缩为参数并从类中调用适当的静态函数来完成用户请求的工作。

我想出了一个解决方案,但是它需要一个专门针对函数类型和函数地址的类,而这正是我遇到的问题。这是一些代码:

template< typename T, typename fn_ptr_t, fn_ptr_t fn_ptr >
struct Fl_Callback_package;

template< typename T, typename Return, typename... Params >
struct Fl_Callback_package< T, Return (*)( Params... ), /* What goes here? */ >
{
  //...
};

编辑:澄清一下-我不希望使用特定功能代替/* What goes here? */,而是希望此参数为Return (*fn_ptr)( Params... )当我尝试

template< typename T, typename Return, typename... Params >
struct Fl_Callback_package< T, Return (*)( Params... ), Return (*fn_ptr)( Params... ) >

我收到来自GCC 4.8.1的错误,该错误fn_ptr未在此范围内声明。

TC

您放置Return (*fn_ptr)( Params... )在错误的位置。这是部分专业化的模板参数,因此它进入template <...>

template< typename T, typename fn_ptr_t, fn_ptr_t fn_ptr >
struct Fl_Callback_package;

template< typename T, typename Return, typename... Params, Return (*fn_ptr)( Params... ) >
struct Fl_Callback_package< T, Return (*)( Params... ), fn_ptr >
{
  //...
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当类型是指针时,模板类方法专门化失败

来自分类Dev

统一函数使用模板专门化和接口来调用实例和原始类型

来自分类Dev

C ++-部分专门化模板类成员函数

来自分类Dev

部分模板专门化的意外结果

来自分类Dev

(部分)专门化依赖类型的非类型模板参数

来自分类Dev

模板专门化和实例化

来自分类Dev

如何专门化模板成员函数?

来自分类Dev

模板成员函数专门化

来自分类Dev

模板类-成员函数专门化

来自分类Dev

模板类-成员函数专门化

来自分类Dev

使用取决于模板参数的函数指针来专门化模板

来自分类Dev

有没有办法根据 lambda 参数返回类型部分地专门化我的模板化函数?

来自分类Dev

如何基于类型相关的类型专门化C ++模板类函数?

来自分类Dev

部分专门化类型特征时,如何使用std :: decay?

来自分类Dev

如何使C ++模板化函数与返回类型无关,以便将来进行专门化

来自分类Dev

如何专门化模板函数以区分void和non-void函数参数

来自分类Dev

线程std ::调用未知类型并且无法专门化函数错误

来自分类Dev

为一组类型专门化函数模板

来自分类Dev

在Swift中,返回相同类型的函数的泛型函数使我“无法显式专门化泛型函数”

来自分类Dev

部分函数/方法模板专门化解决方法

来自分类Dev

字符串化递归`std :: vector <std :: vector <... >>`而不使用部分模板函数专门化

来自分类Dev

部分模板专门化,无需重写类

来自分类Dev

具有部分模板专门化的static_assert

来自分类Dev

模板指向功能的部分模板专门化

来自分类Dev

一类的双部分模板专门化

来自分类Dev

使用当前类专门化继承的模板化函数

来自分类Dev

在C ++ 11中,我如何专门化基于返回类型接受函数对象的函数模板?

来自分类Dev

C++ - 在具有非类型模板参数的模板化类上专门化函数模板

来自分类Dev

无法专门化非通用类型'UIViewController'

Related 相关文章

  1. 1

    当类型是指针时,模板类方法专门化失败

  2. 2

    统一函数使用模板专门化和接口来调用实例和原始类型

  3. 3

    C ++-部分专门化模板类成员函数

  4. 4

    部分模板专门化的意外结果

  5. 5

    (部分)专门化依赖类型的非类型模板参数

  6. 6

    模板专门化和实例化

  7. 7

    如何专门化模板成员函数?

  8. 8

    模板成员函数专门化

  9. 9

    模板类-成员函数专门化

  10. 10

    模板类-成员函数专门化

  11. 11

    使用取决于模板参数的函数指针来专门化模板

  12. 12

    有没有办法根据 lambda 参数返回类型部分地专门化我的模板化函数?

  13. 13

    如何基于类型相关的类型专门化C ++模板类函数?

  14. 14

    部分专门化类型特征时,如何使用std :: decay?

  15. 15

    如何使C ++模板化函数与返回类型无关,以便将来进行专门化

  16. 16

    如何专门化模板函数以区分void和non-void函数参数

  17. 17

    线程std ::调用未知类型并且无法专门化函数错误

  18. 18

    为一组类型专门化函数模板

  19. 19

    在Swift中,返回相同类型的函数的泛型函数使我“无法显式专门化泛型函数”

  20. 20

    部分函数/方法模板专门化解决方法

  21. 21

    字符串化递归`std :: vector <std :: vector <... >>`而不使用部分模板函数专门化

  22. 22

    部分模板专门化,无需重写类

  23. 23

    具有部分模板专门化的static_assert

  24. 24

    模板指向功能的部分模板专门化

  25. 25

    一类的双部分模板专门化

  26. 26

    使用当前类专门化继承的模板化函数

  27. 27

    在C ++ 11中,我如何专门化基于返回类型接受函数对象的函数模板?

  28. 28

    C++ - 在具有非类型模板参数的模板化类上专门化函数模板

  29. 29

    无法专门化非通用类型'UIViewController'

热门标签

归档