C++模板中,函数的具体类型是什么?

image
函数定义中的Compare是一个函数的引用

image
如果需要指明模板参数,应该是什么?简单点说,上图红圈处应该填什么?

image
这是做参数的函数

PS:版本是C++98

阅读 1.9k
2 个回答

bool(int, int) 如果我没记错的话。。。

linked_list<int>* merge_two_linkedlists_asc<int, bool (*)(int, int)>(linked_list<int>* lists1, linked_list<int>* lists2, compare_int)
  1. T 可能是各种各样的自定义类型,因此需要调用者提供链表合并时元素T的比较方式。
  2. Compare &_cmp 一个可调用对象,可能的类型:

    • 函数原型: bool cmp(int, int) {}
    • 函数指针: bool (*cmp)(int, int);
    • lambda 表达式: auto cmp = &->bool{...}
    • 重载了()运算符的类: class cmp { bool operator(int, int){...} };
    • std::bind
    • std::function
  3. 使用”引用“是避免 _cmp 实参是非函数、指针而是闭包、自定义对象的低效拷贝。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题