[英]How to make proper return of templated object in C++?
在此代码中, create_matrix
返回Matrix<int, 2, 3>
类型:
#include <array>
#include <iostream>
using namespace std;
template <class T, size_t ROW, size_t COL>
using Matrix = array<array<T, COL>, ROW>;
Matrix<int, 2, 3> create_matrix(int x, int y){
Matrix<int, 2, 3> arr;
arr[0][0] = 42;
return arr;
}
int main(int argc, char *argv[])
{
auto arr = create_matrix(2,3);
cout << arr[0][0];
return 0;
}
是否可以返回Matrix<int, x, y>
类型?
std :: array的模板参数必须在编译时已知(在编译时已知的文字值,const值或constexpr值)
因此,在这种情况下,将无法返回在运行时传入x和y的Matrix。
要获得这种功能,您可能需要将std :: array替换为std :: vector或某些类似的动态数组类型的对象,即使这样,您也必须重新构造代码,以免将值用作模板参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.