boost::uBLAS and vc 7.1 compiler error
От: Экселенц Россия  
Дата: 25.01.05 13:03
Оценка:
Простейший пример:


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

using namespace boost::numeric;

int main() {
    ublas::bounded_matrix<double, 3, 3> m, m1, m2;

    m = m1 * m2;
}



вызывает ошибку компиляции:
error C2666: 'boost::numeric::ublas::operator`*'' : 2 overloads have similar conversions

Подобные проблемы с другими операторами, +, -, = для векторов или матриц. Google наличие проблемы подтвердил, но решения я не нашёл.
Re: boost::uBLAS and vc 7.1 compiler error
От: spanasik  
Дата: 26.01.05 08:10
Оценка:
Здравствуйте, Экселенц, Вы писали:

Э>вызывает ошибку компиляции:

Э>error C2666: 'boost::numeric::ublas::operator`*'' : 2 overloads have similar conversions

Из документации к boost::uBlas :
Multiplication of matrices
matrix_expression prod<matrix_type > (const matrix_expression &, const matrix_expression &);
matrix_expression prod (const matrix_expression &, const matrix_expression &);


Если тебе нужно умножить матрицы, юзай prod, и всё будет OK.

А то, что ты написал, вызывает сообщение, говорящее о том, что компилятор пытается выбрать
из 2 scalar операций над матрицами, и не может
Вот если бы ты написал m = m1 * 3; то он бы сделал всё ОК.

Э>Подобные проблемы с другими операторами, +, -, = для векторов или матриц.


Как ни пытался, не смог найти проблемы, о котрых ты гоаворишь — у меня всё ОК работает.

Э>Google наличие проблемы подтвердил, но решения я не нашёл.


Здесь он ни к чему — читай, что компилятор пишет

С уважением,
Стас
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[2]: boost::uBLAS and vc 7.1 compiler error
От: Экселенц Россия  
Дата: 26.01.05 13:18
Оценка:
Вот пример:


ublas::bounded_vector<double, 3> v, v1, v2;
v = v1 + v2;



error C2666: 'boost::numeric::ublas::vector<T,A>::operator`='' : 3 overloads have similar conversions
Re[3]: boost::uBLAS and vc 7.1 compiler error
От: spanasik  
Дата: 27.01.05 10:28
Оценка:
Здравствуйте, Экселенц, Вы писали:

Э>Вот пример:

Э>
Э>ublas::bounded_vector<double, 3> v, v1, v2;
Э>v = v1 + v2;
Э>


Э>error C2666: 'boost::numeric::ublas::vector<T,A>::operator`='' : 3 overloads have similar conversions


Вот такой код с 6 warning-ами компилится спокойно:

#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/io.hpp>
namespace ublas = boost::numeric::ublas;

template<class V>
void initialize_vector (V &v) {
    int size = v.size ();
    for (int i = 0; i < size; ++ i)
        v [i] = i + 1.f;
}

void main()
{
    ublas::bounded_vector<double, 3> v, v1, v2;
    initialize_vector (v1);
    initialize_vector (v2);
    std::cout << v1 << std::endl;
    std::cout << v2 << std::endl;
    v = v1 + v2;
    std::cout << v << std::endl;
    /*
    ==============Output=================
    [3](1,2,3)
    [3](1,2,3)
    [3](2,4,6)
    */
}


Boost — 1.32,
VC 7.1 — cl.exe 13.10.3077.0

C уважением,
Стас
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[4]: boost::uBLAS and vc 7.1 compiler error
От: Экселенц Россия  
Дата: 27.01.05 13:29
Оценка:
Да, лействительно, в boost 1.32 всё нормально компилится. Но я пробовал на 1.31 и там были эти проблемы. Просматривая change log при выходе 1.32, не помню, чтобы видел там изменения в uBLAS. Может я не прав, в любом случае придётся переходить на 1.32.
Спасибо за помощь!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.