#include <iostream>
template<typename T_function_type>
struct pointer_wrapper {
T_function_type function_pointer;
explicit pointer_wrapper(T_function_type ptr) : function_pointer(ptr) { }
~pointer_wrapper() { }
};
template<typename T_return, typename T_arg1, typename T_arg2>
pointer_wrapper<T_return (*)(T_arg1, T_arg2)> fabricate_some_trait(T_return (*ptr)(T_arg1, T_arg2)) {
return pointer_wrapper<T_return (*)(T_arg1, T_arg2)>(ptr);
}
void hello(std::string const& name, std::string const& surname) {
std::cout << "Hi " << name << " " << surname << "! ";
std::cout << "Was wondering if it\'s possible to modify ";
std::cout << "some_trait template in that way that it\'s ";
std::cout << "capable of deducing function (as well as ";
std::cout << "static and member one) type like the ";
std::cout << "template function fabricate_some_trait is. ";
std::cout << "So I can use these traits in typedef. ";
std::cout << "Will be perfect if no <functional>, ";
std::cout << "Boost.Function nor sigc::signal is going ";
std::cout << "to be used. Hope you can help and sorry ";
std::cout << "in advance about the form of this question, ";
std::cout << "just feeling good today." << std::endl;
std::cout << "Cheers!" << std::endl;
}
int main() {
// need
// some_trait<hello>::function_type hello_pointer = hello;
// hello_pointer("Stackoverflow", "User");
fabricate_some_trait(hello).function_pointer("Stackoverflow", "User");
}
/*
template<typename T_return_type(*)(typename T_arg, typename T_arg2)>
struct some_trait {
typedef T_return (*function_type)(T_arg1, T_arg2);
typedef T_return result_type;
typedef T_arg1 arg1_type;
// (...)
};
*/
0
A
回答
1
你想提升的类型特征,具体功能特点:
它的工作原理只是普通的C函数指针细,无需使用boost ::为sigc ::信号的功能。通过函数特征,你可以单独提取返回类型和每个参数类型,不需要自己完成特殊化。
如果你根本不能使用boost,那么你仍然可以检查它们的实现以获得它的工作原理的一般概念。
+0
模板
相关问题
- 1. 有一个模板参数可以是指针类型或非指针类型
- 2. 是否可以定义“模板函数指针”的类型?
- 3. 指针类型的类模板专门化中没有匹配函数
- 4. 是否可以从指针模板参数中提取类型?
- 5. 成员函数指针指向未指定的类类型 - 是否有可能?
- 6. 是否可以指向类成员的Typedef函数指针?
- 7. Cocos2d:可以有指向父级类指针的指针吗?
- 8. 如何使用指向模板类型的指针
- 9. 模板类与指针模板参数的专门化
- 10. comp.lang.c faq:可以返回指向相同类型函数的指针的函数
- 11. 是否可以获取指针在Delphi 7中指向的类型的大小?
- 12. 将指针指向CLR类型以使用不安全的void *
- 13. C:接收指针指针的函数,因此可以分配外部指针
- 14. 指针是否可以指向const空类或非const类?
- 15. 是否可以在C++中声明指向模板函数的void指针?
- 16. 检查指针指向LLVM中的指针类型
- 17. 使用函数指针的类型作为模板参数
- 18. QxOrm是否可以坚持指向抽象类的指针?
- 19. 是否有可能在Fortran的类型构造函数中使用指针?
- 20. 如何释放指向堆中指向堆中其他对象的指针类型的指针指针类型?
- 21. 指向类类型的指针
- 22. 使用成员函数指针专用模板类
- 23. 具有函数指针的模板类不接受专业化
- 24. 将指针指向类函数以指向函数
- 25. 将函数指针转换为指向函数类型的指针的结果
- 26. 使用NULL类指针,可以调用类成员函数。这怎么可能?
- 27. 不同结构类型指针指向指针结构指针
- 28. 提领指向不完全类型 - 分配值使用指向函数的指针,以结构
- 29. 一个类内的指针可以指向这个吗?
- 30. 是否有可能为模板类型专门化模板?
哈哈究竟是什么? StackOverflow不是编程Jeopardy。你不必以代码的形式来描述你的问题。 – 2010-07-09 17:59:48
Lol,srsly把这个问题从代码xD – 2010-07-09 18:01:11