功能指针参数的自动返回类型
Automatic return types for function pointer arguments?
我正在创建一个模板函数,尽管我试图进一步简化语法。
到目前为止,我有类似的东西:
template< typename obj, typename ret, typename... args >
auto py_wrapped_func( ret (obj::*f)( args... ) )
{
// Do some stuff with the function pointer.
}
麻烦是,有时返回类型为RET,很疯狂。我想知道是否有办法将其简化为以下内容:
template< typename obj, typename... args >
auto py_wrapped_func( decltype(auto) (obj::*f)( args... ) )
{
// Do some stuff with the function pointer.
}
显然,这不会编译 - "函数原型中不允许使用exttype(auto)"。有更好的方法吗?
我知道我可以直接在函数类型上模板,但是我宁愿避免在使用模板或使用decltype(&obj::func)
时必须写出模板功能类型。无论如何,我需要参数args
作为模板参数。
我猜想编译器需要明确了解功能指针类型,而不仅仅是对象和一些参数。我问太多了吗?也许我是?
这也许是这个问题的重复。
无法通过模板参数扣除提供该函数的参数,但是函数可以。一个简单的解决方案是重新排列模板参数如下:
template< typename... args, typename obj, typename ret >
auto py_wrapped_func( ret (obj::*f)( args... ) )
{
// Do some stuff with the function pointer.
}
现在可以从参数中推断出对象和返回类型。
我不确定这是否可以与左侧的variadic模板参数一起使用。但是,它似乎可以很好地编译...
相关文章:
- 接收和返回函数指针的函数指针的类型?
- 具有"templated"返回类型和参数的函数指针
- 为什么要为指针返回类型返回一系列字符?
- 返回不同返回类型的函数的函数指针的函数
- 从弱指针返回类型返回共享指针
- 我的问题是关于类成员函数作为类指针的返回类型
- C :无指针的协变返回类型
- 是否可以将“自动”关键字用作函数指针声明中使用初始化的返回类型
- C 返回类型指针声明
- 将结构指针声明为函数的返回类型
- 返回函数指针错误而不带类型定义
- 这个函数指针的尾部返回类型为"this"合法吗
- 在参数包中获取函数指针的返回类型,并将其保存为与其他参数连接的元组
- 功能指针参数的自动返回类型
- 如何将函数指针声明指向模板函数,其返回类型取决于模板类
- 是否可以声明指向未知(编译时)返回类型的函数的指针
- API返回类型--强制将智能指针指向用户
- 重写虚函数协变返回类型(两个指针)
- 将函数指针插入到具有多态返回类型的映射中
- 指针从C 中的函数返回类型