|
Ublas : |
Subject: [ublas] Matrix Multiplication with Different Result Type
From: Tynan Wilke (tynan.wilke_at_[hidden])
Date: 2010-05-28 14:12:13
Hello,
I'm trying to get the following code to compile, but am running into
problems which I believe stem from using a different result type than the
types of the matrices being multiplier together. If I "typedef A C" in the
below example, the code compiles fine.
Any hints/suggestions on getting this to compile are greatly appreciated.
Thanks,
Tynan
-------------------------------------------------
#include<iostream>
#include<boost/numeric/ublas/matrix.hpp>
#include<boost/numeric/ublas/io.hpp>
namespace ub = boost::numeric::ublas;
struct A {
A() {}
A(int) {}
};
struct B {};
struct C {};
//typedef A C;
// For matrix multiply *
C operator*(const A &a, const B&b) {
// noop
}
// For matrix multiply +
C operator+(const C &c1, const C &c2) {
// noop
}
// For matrix multiply +=
C operator+=(C &c1, const C &c2) {
// noop
}
// Needed for promote_traits<A, B> for result_type (I think)
C operator+(const A &a, const B &b) {
// noop
}
int main() {
ub::matrix<A> mxA(1, 3);
ub::matrix<B> mxB(3, 3);
ub::matrix<C> mxC = prod(mxA, mxB);
};