Hi Joerg, first let me thank you for beeing so helpful. |> But this still leaves me with even more questions: |> |> Why would I prefer: |> |> template<class E> |> void foo(const vector_expression<E>& arg) |> { |> arg().size(); |> } |> |> over |> |> template<class V> |> void foo(const V& arg) |> { |> arg.size(); |> } |> |> ? | You could overload foo() for vector_expression<> and matrix_expression<> | then. Sorry for giving the second hint first ;-) Do you mean for the sake of getting better error diagnostics when I supply a completely unrelated type to foo? As i.e. foo(3.15)? Or did I misunderstand you? |> ... <snip> ... | You've lost me. Above you've pointed out both ways to declare generic | functions foo(). Ok, I think I understand this now. | Are you talking about the implementation of foo() now? Yes it seems so. Using either declaration will result in a separate overloaded function. (Is this referred to as code bloating?) But all I need is access to operator[] (and similar), operator(n,m), size1/2 () and the value_type basically. This is why I tried first to formulate my algorithm in terms of iterators. Somehow I am trying to discard the expression type info I think, since I am only interested in the common member functions, that let me see it as a container. Could I write a kind of vector and matrix proxy that is able to acomplish this? Would you recommend or not to take this route? BTW.: I am not sure exactly what comprises the user interface to the uBLAS. Is this what is in the documentation? Then what is vector_reference for? Why is vector_constant_reference not available and what is its purpose? Could this class be of help in my case? |> Could you Joerg or anyone else give me some ideas of how |> to do this (conceptually simple) task or point me to some example |> code? | I believe, I've answered this one already: | http://groups.yahoo.com/group/Boost-Users/message/3028 | | (see the bottom of the posting). Anything wrong with that? Oh, sorry I somehow overlooked this message. Thank you. Regards, Roland