首页 > 解决方案 > 对模板函数的引用向量

问题描述

我有很多这样定义的函数:

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 中编译时,它会在实例化 ( ) 处引发许多 C2528 错误decltype(auto) functs<long double>,全部来自分配器。我哪里错了?

标签: c++templatesvisual-c++vectorreference

解决方案


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

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

推荐阅读