Boost logo

Ublas :

From: Sorkin Dima (dsorkin_at_[hidden])
Date: 2007-03-24 16:49:29


Hi Gunter.
  Thanks for reply.
I just composed my next message :)

  I resolved the problem, diff file attached, here are the explanations:

1)
  in matrix_proxy.hpp, line 464:
      The overloading of "row" function template is redundant.
    I.e. it does not harm with "good" compiler, but makes problems
    with less smart one. If it is removed, still in case of constant
    matrix the code will work (because the template in line 459 will
    be instantiated with [M = const MM], where 'const MM' is the type
    of the argument).
2)
  in matrix_proxy.hpp, line 199,
  "friend void swap (matrix_row mr1, matrix_row mr2) {"
     What is exactly defined there ? A free function is defined
  inside the scope of the class ? I thought it is not allowed in c++...
  Anyway, MIPSpro doesn't accept it. I moved it outside, then it accepted
  the code.

Regards,
  Dima.

On Sat, 24 Mar 2007, Gunter Winkler wrote:
> Am Samstag, 24. März 2007 16:30 schrieb Sorkin Dima:
>> Hi.
>> I have a problem with some uBLAS (boost 1.33)
>> based code, when I work with MIPSpro 7.4.3m or
>> and GCC on SGI platform.
>
> Function symbol function template
> "boost::numeric::ublas::row(M &, M::size_type)" is
> ambiguous by inheritance.
> Function symbol function template
> "boost::numeric::ublas::row(const M &, M::size_type)" is
> ambiguous by inheritance.
>
>> error: due to a defect in the G++ 3.2 ABI, G++ has assigned the same
>> mangled name to two different types
>
>
> Obviously the errors are compiler deficiencies. AFAIR this bug was fixed
> in gcc 3 branch at least at release of 3.4. I have no knowledge about
> the SGI compiler. Can you check if the use of row_const fixes the
> problem.
>
> mfg
> Gunter
>