In article <[EMAIL PROTECTED]>, "John V. Shahid" <[EMAIL PROTECTED]> writes: > Sorry for not reading your message, but I was busy lately. I think the > reason no one responded to you is that the code you submitted is either > not compilable or not complete.
of course it's not compileable, that was my point. however,you're right, I simply removed unneccessary code and thereby the result got crippled. I forgot 1 include and the default-parameter as you noticed. however, recently I got an internal compiler error: in instantiate_class_template, at cp/pt.c:5666 after replacing below my complicated operator= version with the much simpler (or even adding the following to stl_algorithm_class): template<template<class,typename> class stl_operator_, class op_, typename val2_> iter_ operator=(stl_operator_<op_,val2_>& o) {return o(*this);} Please submit the bug-report yourself, since I don't have net-access now. So, again, my original question was about error: no match for 'operator=' in 'o =... when compiling (with g++ 4.1.2): #include <algorithm> #include <functional> template<typename iter_, typename val_= typename std::iterator_traits<iter_>::value_type> struct stl_algorithm_class {//class encapsulating all stl-algorithms operating on iterator-ranges... template<class op_,typename iter2_=iter_> class stl_binary_operation { stl_algorithm_class<iter_> v1; stl_algorithm_class<iter2_> v2; public: stl_binary_operation(stl_algorithm_class<iter_> v, stl_algorithm_class<iter2_> w): v1(v), v2(w) {} template<typename iter3_> iter3_ operator()(stl_algorithm_class<iter3_> o) {return std::transform(v1.start,v1.tail,v2.start,o.start, op_());} }; template<class op_,typename iter2_> class stl_unary_operation {//similar }; iter_ start,tail; stl_algorithm_class(const iter_& s, const iter_& e): start(s), tail(e) {} template<typename iter2_,typename val2_> iter_ operator=(const stl_algorithm_class<iter2_,val2_>& t) {return std::copy(t.start,t.tail,start);} template<template<class,typename> class stl_operator_,class iter2_, typename val1_,class op_, typename val2_> iter_ operator=(typename stl_algorithm_class<iter2_,val1_>::template stl_operator_<op_,val2_>& o) {return o(*this);} template<typename iter2_> friend stl_binary_operation<std::multiplies<val_>,iter2_ > operator*(const stl_algorithm_class<iter_>& a, const stl_algorithm_class<iter2_>& b) {return stl_binary_operation<std::multiplies<val_> ,iter2_>(a,b);} }; int n(16),s1[16],s2[16]; stl_algorithm_class<int*,int> i(s1,s1+n),o(s2,s2+n); int main() { o=o*i; } -- Better send the eMails to netscape.net, as to evade useless burthening of my provider's /dev/null... P _______________________________________________ help-gplusplus mailing list help-gplusplus@gnu.org http://lists.gnu.org/mailman/listinfo/help-gplusplus