gpt4 book ai didi

c++ - 用模板类完美转发

转载 作者:行者123 更新时间:2023-11-27 22:42:07 24 4
gpt4 key购买 nike

假设我有一个模板类,例如 template<int n, int m> class Matrix

有没有办法定义一个矩阵乘法运算符*使得

  1. * 的参数可以是左值或右值引用
  2. *从其参数中推断出适当的返回类型(即适当的模板参数)

我的想法是这样的

template< int n,int k, int m, template<int,int> class T1, template<int, int> class T2, template<int,int>class T3 >
T3<n,m> operator*(T1<n,k>&&, T2<k,m>&&)//does not work

当我尝试运行上面的代码(以明显的方式填充主体)时,出现错误:

Cannot convert from Matrix<1,1> to Matrix<1,1>&&

当参数是左值时。

最佳答案

是的。来 self 自己的代码:

template
<
int LeftColumnsRightRows, int LeftRows,
int RightColumns
>
Matrix<RightColumns, LeftRows> operator*(Matrix<LeftColumnsRightRows, LeftRows> const& a, Matrix<RightColumns, LeftColumnsRightRows> const& b)

而且我不知道您为什么要使用 &&。如果要将其他两种类型转换为矩阵,然后将它们相乘,则应在乘法运算符之外进行转换。

关于c++ - 用模板类完美转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48014305/

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