Boost logo

Ublas :

Subject: [ublas] Making explicit the conversion between unless types
From: Riccardo Rossi (rrossi_at_[hidden])
Date: 2016-06-24 09:49:10


Dear all,

Right now the following code

#include <iostream>
#include <iostream>
#include <boost/numeric/ublas/matrix.hpp>

void f(
    const boost::numeric::ublas::bounded_matrix<double,10,1>&
should_be_10by1
     )
{
}

int main() {
    boost::numeric::ublas::bounded_matrix<double,10,1> correct;
    boost::numeric::ublas::bounded_matrix<double,1,10> wrong;
    f(correct);
    f(wrong); //how can this be compiled??? - i expect the type of wrong to
be ...wrong for f!!
}

Does compile, effectively bypassing type safety.

Essentially if I use a reference in defining a function it is because I don
t want to pass by value.
In this case a copy is being done...allowed by the fact that the reference
I pass is constant.

Couldn't t the conversion be made explicit? That would potentially uncover
many bugs...

Regards
Riccardo