模板函数引用的向量

时间:2019-03-28 22:47:18

标签: c++ templates visual-c++ vector reference

我有很多这样定义的功能:

template<class T>
std::tuple<Matrix<T>, Matrix<T>, Matrix<T>> gaussSeidel(Matrix<T> const& A, Matrix<T> const& b, long double precision) {
    ...
}

现在,我想在模板化的矢量变量中保留对它们的所有引用,我试图像这样声明:

template<typename T>
std::vector<std::tuple<Matrix<T>, Matrix<T>, Matrix<T>> (&) (Matrix<T>, Matrix<T>, T)> functs {gaussSeidel<T>, jacobi<T>, richardson<T>, sor<T>, gmres<T>};

在Visual Studio中进行编译时,实例化(decltype(auto) functs<long double>时会引发许多C2528错误,所有错误均来自分配器。我要去哪里错了?

1 个答案:

答案 0 :(得分:1)

据我所知,您需要一个指向函数的指针向量而不是对函数的引用。 您应将(&)替换为(*)

template<typename T>
std::vector<std::tuple<Matrix<T>, Matrix<T>, Matrix<T>> (*)(Matrix<T> const&, Matrix<T> const&, long double)> functs {gaussSeidel<T>, jacobi<T>, richardson<T>, sor<T>, gmres<T>};