$include_dir="/home/hyper-archives/ublas/include"; include("$include_dir/msg-header.inc") ?>
From: Peter Melchior (pmelchior_at_[hidden])
Date: 2007-01-30 06:35:39
Hello,
> > I'm trying to use vector expressions for atlas methods.
> > I did a fresh checkout of the sandbox and tried to compile the
> > example
> >
> > >from the atlas bindings documentation:
> >
> 
> > Error: vector_expression() is private
> 
> The default constructor of vector_expression is private, because it is 
> not allowed to directly instantiate a vector_expression. This means one 
> cannot have functions like:
> 
> template < class V>
> foo(const vector_expression<V> v);
> 
> but one has to use
> 
> template < class V>
> foo(const vector_expression<V> & v); // note the reference!
> 
> maybe there are some mistakes of such type in the atlas bindings.
> 
> Can you check this?
This is the implementation of nrm2 in the atlas bindings.
   // nrm2 <- ||x||_2
    template <typename Vct>
    inline
    typename traits::type_traits<
#ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
      typename traits::vector_traits<Vct>::value_type
#else
      typename Vct::value_type
#endif
    >::real_type
    nrm2 (Vct const& x) {
      return detail::nrm2 (traits::vector_size (x),
#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
                           traits::vector_storage (x),
#else
                           traits::vector_storage_const (x),
#endif
                           traits::vector_stride (x));
    }
So the vector is passed by reference.
Regards,
Peter Melchior