sbi*_*sbi 5 c++ function template-meta-programming
考虑这样一个野兽:
template<typename Func>
void register_function(Func func) {
// type-erase Func and pass it on to some other function
}
Run Code Online (Sandbox Code Playgroud)
假设这可以传递给任何可调用的东西.
如果Func是普通函数类型,我知道如何获取函数的签名.鉴于它func可以是普通函数,std::function<F>函数或函数对象(std::bind()表达式),我如何得到函数的参数?
注意:
std::bind()需要签名才能获得参数的类型,这些类型需要在传递的类型擦除的东西中使用
这是严格的C++ 03(嵌入式平台),所以没有变量模板参数等.
Pup*_*ppy 10
不可能.函数对象可能已经过载或模板化operator().因此,它具有"签名"的想法根本不适用,因为它可以具有无限数量的签名.
如果将其限制为只有一个签名,则可以使用operator()的地址,然后使用常规模板特化从成员函数指针类型中获取参数.
| 归档时间: |
|
| 查看次数: |
469 次 |
| 最近记录: |