$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Kresimir Fresl (fresl_at_[hidden])
Date: 2002-05-01 17:12:43
Hi,
it seems that there are still some missing `typename's ;o).
g++ 3.1 complains (for g++ it is a warning, not an error, but
Comeau's compiler treats it as error):
/home/krcko/include/ublas/vector_et.h:82: warning: `typename
numerics::scalar_const_reference<T>::value_type' is implicitly a
typename
/home/krcko/include/ublas/vector_et.h:82: warning: implicit typename is
deprecated, please see the documentation for details
========================================================
Here are the diffs:
============
`matrix_et.h'
-----------------------------------------------------------------------------
200c200
< matrix_const_reference<E>::expression_type
matrix_const_reference<E>::nil_;
---
> NUMERICS_TYPENAME matrix_const_reference<E>::expression_type
matrix_const_reference<E>::nil_;
451c451
< matrix_reference<E>::expression_type matrix_reference<E>::nil_;
---
> NUMERICS_TYPENAME matrix_reference<E>::expression_type
matrix_reference<E>::nil_;
------------------------------------------------------------------------------
=============
`matrix_pr.h'
------------------------------------------------------------------------------
473c473
< matrix_row<M>::matrix_type matrix_row<M>::nil_;
---
> NUMERICS_TYPENAME matrix_row<M>::matrix_type matrix_row<M>::nil_;
1163c1163
< matrix_column<M>::matrix_type matrix_column<M>::nil_;
---
> NUMERICS_TYPENAME matrix_column<M>::matrix_type
matrix_column<M>::nil_;
1823c1823
< matrix_vector_range<M>::matrix_type matrix_vector_range<M>::nil_;
---
> NUMERICS_TYPENAME matrix_vector_range<M>::matrix_type
matrix_vector_range<M>::nil_;
2240c2240
< matrix_vector_slice<M>::matrix_type matrix_vector_slice<M>::nil_;
---
> NUMERICS_TYPENAME matrix_vector_slice<M>::matrix_type
matrix_vector_slice<M>::nil_;
3094c3094
< matrix_range<M>::matrix_type matrix_range<M>::nil_;
---
> NUMERICS_TYPENAME matrix_range<M>::matrix_type matrix_range<M>::nil_;
3969c3969
< matrix_slice<M>::matrix_type matrix_slice<M>::nil_;
---
> NUMERICS_TYPENAME matrix_slice<M>::matrix_type matrix_slice<M>::nil_;
-------------------------------------------------------------------------------------
=============
vector_et.h
--------------------------------------------------------------------------------------
82c82
< scalar_const_reference<T>::value_type
scalar_const_reference<T>::nil_;
---
> NUMERICS_TYPENAME scalar_const_reference<T>::value_type
scalar_const_reference<T>::nil_;
195c195
< vector_const_reference<E>::expression_type
vector_const_reference<E>::nil_;
---
> NUMERICS_TYPENAME vector_const_reference<E>::expression_type
vector_const_reference<E>::nil_;
335c335
< vector_reference<E>::expression_type vector_reference<E>::nil_;
---
> NUMERICS_TYPENAME vector_reference<E>::expression_type
vector_reference<E>::nil_;
--------------------------------------------------------------------------------------
================
vector_pr.h
---------------------------------------------------------------------------------------
472c472
< vector_range<V>::vector_type vector_range<V>::nil_;
---
> NUMERICS_TYPENAME vector_range<V>::vector_type vector_range<V>::nil_;
956c956
< vector_slice<V>::vector_type vector_slice<V>::nil_;
---
> NUMERICS_TYPENAME vector_slice<V>::vector_type vector_slice<V>::nil_;
============================================================
============================================================
These changes (as well as those from my previous post) finally
reduced the number of Comeau's compiler error messages to
a manageable number, so that I succeeded to compile my examples
with it.
To compile with `como', I used settings for g++, ie. I simply
added in `config.h':
---------------------------------------------------------------------
107a108,112
> #ifdef USE_COMO
>
> #define USE_GCC
>
> #endif
---------------------------------------------------------------------
como found some `minor' bugs and typos:
===============
matrix.h
------------------------------------------------------------------
2745c2745
< -- it;
---
> -- it_;
------------------------------------------------------------------
===============
matrix_sp.h
-------------------------------------------------------------------
999c999
< non_zeros = 0;
---
> non_zeros_ = 0;
1001,1002c1001,1002
< non_zeros += (*itv).size ();
< return non_zeros;
---
> non_zeros_ += (*itv).size ();
> return non_zeros_;
1988c1988
< size_type non_zeros_;
---
> mutable size_type non_zeros_;
----------------------------------------------------------------------
[[`non_zeros_' must be `mutable' in `sparse_vector_of_sparse_vector'
because const function `non_zeros()' (lines 998-1003) modifies it.]]
==========================
vector_sp.h
-----------------------------------------------------------------------
522c522
< return non_zeros;
---
> return non_zeros_;
------------------------------------------------------------------------
`como' also complains that
"/home/krcko/include/ublas/iterator.h", line 519: error:
identifier "base" is undefined
patch for `iterator.h' is:
-----------------------------------------------------------------------
24c24
< #ifdef USE_GCC
---
> #if (defined USE_GCC) && (!defined USE_COMO)
506a507,509
> #ifdef USE_COMO
> using std::reverse_iterator<I>::base;
> #endif
562a566,568
> #ifdef USE_COMO
> using std::reverse_iterator<I>::base;
> #endif
641a648,650
> #ifdef USE_COMO
> using std::reverse_iterator<I>::base;
> #endif
==========================================
And finally, there are some missing includes in `traits.h':
--------------------------------------------------------------------------
19a20
> #include <cmath>
20a22
> #include <iterator>
---------------------------------------------------------------------------
[[<cmath> is needed for `std::fabs()' and `std::sqrt()' and
<iterator> for iterator tags.]]
and in `math.h':
-------------------------------------------------------------------------
20a21
> #include <algorithm>
23d23
< #include "exception.h"
-------------------------------------------------------------------------
[[<algorithm> is needed for `std::max()', while `exception.h'
is superfluous.]]
Sincerely,
fres