如何制作函数模板,它使用std::vector和指向函数的指针
How to make function template, which takes std::vector and pointer to function?
Function1获取指向std::vector(未指定类型)的指针和指向其他函数模板(Function2)的指针。Function2接受两个对象(类型类似std::vector-type)并返回bool。如何制作这些模板?
例如:
bool Function2(int i1, int i2);
void Function1(std::vector<int>* v1, Function2);
我尝试:
template <typename type> bool FunctionP(type, type);
template <typename tVector> void FunctionT(tVector* pVector, FunctionP pFunkcja);
它给出:
'FunctionP' is not a type
bool Function2(int a, int b)
template <typename T>
void Function1(std::vector<T>* vector, std::function < bool(T, T)> callback)
专业化呼叫
std::vector<int> vec{1,2,3,4,5};
Function1<int>(&vec, std::bind(Function2, std::placeholders::_1, std::placeholders::_2));
我认为这是由行引起的
template <typename tVector> void FunctionT(tVector* pVector, FunctionP pFunkcja);
FunctionP
是一个函数的模板。只能存储指向模板函数专门化的指针,而不能存储实际模板。
因此,只需使用普通指针作为参数。例如
bool Function2(int i1, int i2);
void Function1(std::vector<int>* v1, bool (*f)(int, int));
相关文章:
- 编译器如何区分std::vector的构造函数
- 为什么std::vector和std::valarray初始化构造函数不同
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- std::vector::p ush_back() 不会在 MSVC 上编译具有已删除移动构造函数的对象
- std::vector 没有重载函数的实例与参数列表匹配
- 如何为 std::vector 分配内存,然后稍后为某些元素调用构造函数?
- 创建一个没有复制构造函数的类的 std::vector 的 std::vector
- 为 std::vector 编写自定义插入函数
- 从返回 std::optional of std::vector 的函数中获取结果到调用方
- 将 vector<vector<int>> 传递到函数中会产生内存错误
- 是否可以将具有不同签名的 lambda 存储在 std::vector 中并在函数中执行它们(使用各自的参数)?
- 将 cv::Mat 转换为 std::vector 的通用函数
- 从 std::vector 迭代器中执行函数指针
- C++ std::vector 中的虚拟析构函数继承
- 错误:调用"es_queue::set_rpc_vector(std::vector >&, std::__cxx11::string)"没有匹配函数
- 调用2类继承的vector函数
- 在c++中,vector函数push_back会增加空数组的大小吗?
- 如何通过List
从Java到c++的std::vector函数参数使用JNA - 修改std::vector函数(继承?)
- 不能重载现有的std::vector函数