Вектор ссылок на шаблонные функции - PullRequest
0 голосов
/ 29 марта 2019

У меня есть много функций, определенных так:

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

Он генерирует много ошибок C2528 при создании экземпляра (decltype(auto) functs<long double>) при компиляции в Visual Studio, возникающих из распределителя. Куда я иду не так?

1 Ответ

1 голос
/ 29 марта 2019

Из того, что я знаю, вам нужен вектор указателей на функции, а не ссылки на функции. Вы должны заменить (&) на (*)

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>};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...