gpt4 book ai didi

c++ - 函数模板与重载混合

转载 作者:行者123 更新时间:2023-11-30 02:27:00 27 4
gpt4 key购买 nike

所以我想创建一个函数,将数据从文本文件读取到各种矩阵中。
第一个是 Eigen矩阵,您可以在其中访问带括号的元素。
例如。 mat(1,2) .第二种是类似 vector<vector<T> 的类型, 其中T可以是 int , double , 等等。显然它们是用方括号访问的。

现在我需要为这两种情况创建一个模板。 Eigen有许多矩阵类型( MatrixXdSparseMatrix 等),和 vector<vector<T>>可以有多种类型 T .

但是,我如何确保 Eigen 的模板函数?当我真正想要的是 vector<vector<T>> 的模板函数时不会被调用?

我知道重载优先于模板,但它们都是模板化的!
我该怎么办?

最佳答案

对嵌套 vector 情况使用偏特化*,对各种 Eigen 类使用一般情况,如下所示:

template <typename T>
void foo(vector<vector<T>>& mat) {
// code that uses mat[x][y]
}

template <typename T>
void foo(T& mat) {
// code that uses mat(x,y)
}

(* 是的,我知道学究们会指出,从技术上讲,这不是“偏特化”而是“偏序函数重载”。)

关于c++ - 函数模板与重载混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42192655/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com