如何制作函数模板,它使用std::vector和指向函数的指针

How to make function template, which takes std::vector and pointer to function?

本文关键字:vector 函数 指针 std 函数模板 何制作      更新时间:2023-10-16

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));