构 矩阵标签{};
构 向量标签{};
元<类 MV>构 矩阵向量特征{用 TT=MV::TT;};
元<类 MV1,类 MV2,类 TT1,类 TT2>
构 的中型{用 型=MV1;};
元<类 MV1,类 MV2>
构 的中型<MV1,MV2,矩阵标签,向量标签>{
用 型=MV2;
};
元<类 MV1,类 MV2>
类 的中型<MV1,MV2,类 矩阵向量特征<MV1>::TT,
类 矩阵向量特征<MV2>::TT>::型
积(MV1 常&mv1,MV2 常&mv2){
中 积(mv1,mv2,
类 矩阵向量特征<MV1>::TT(),
类 矩阵向量特征<MV2>::TT());
}
元<类 矩阵1,类 矩阵2>
矩阵1 积(矩阵1 常&m1,矩阵2 常&m2,矩阵标签,矩阵标签);
元<类 矩阵,类 向量>
向量 积(矩阵 常&m,向量 常&v,矩阵标签,向量标签);
元<类 向量,类 矩阵>
向量 积(向量 常&v,矩阵 常&m,向量标签,矩阵标签);
元<类 T>构 矩阵概念{用 型=T;};
元<类 T0,类 T1>类 向量概念<T0>::型
符号*(矩阵概念<T0>常&mc,向量概念<T1>常&vc)
{
用 矩阵类型=矩阵概念<T0>::型;
用 向量类型=向量概念<T1>::型;
矩阵类型 常&m(*重转<常 矩阵类型*>(&mc));
向量类型 常&v(*重转<常 向量类型*>(&vc));
}
元<类 T0,类 T1>类 向量概念<T1>::型
符号*(向量概念<T0>常&vc,矩阵概念<T1>常&mc)
{
用 矩阵类型=矩阵概念<T1>::型;
用 向量类型=向量概念<T0>::型;
向量类型 常&v(*重转<常 向量类型*>(&vc));
矩阵类型 常&m(*重转<常 矩阵类型*>(&mc));
}