visual bug?



  • ich habe das:

    template<typename ReturnT, class C>
    struct ConstMemFunT{
        explicit ConstMemFunT(ReturnT(C::*method)()const):method_(method){}
        ReturnT operator()(C *object)const{ return (object->*method_)(); }
    private:
        ReturnT(C::*method_)()const;
    };
    
    template<class ReturnT, class C>
    ConstMemFunT<ReturnT, C> constMemFun(ReturnT(C::*method)()const){ return ConstMemFunT<ReturnT, C>(method); }
    
    //dest[i]=source[i]->f();
    template<typename T, class C>
    void harvest(const std::vector<C*>&source, std::vector<T>&dest, ConstMemFunT<T, C> f){
        dest.clear();
        std::transform(source.begin(), source.end(), back_inserter(dest), f);
    }
    

    nun hatte ich mir gedacht, das so aufzurufen:

    harvest(q_, times_, f);
    

    fuerht aber zu internal compiler erro C1001
    so gehts, ist aber unschoen:

    harvest<double, QS>(q_, times_, f);
    

    ist es ein bug des visual, dass er keine template parameter aus anderen templates ziehen kann? ich dachte, ich haette das schon gemacht.
    oder kann das laut standard nicht gehen? oder habe ich einen denkfehler?

    edit: die ersten zwei templates haben nix damit zu tun, aber eh ich sie loesche faellt mir ne frage ein: muss man das so machen? oder hat der standard etwas analog zu mem_fun_t, dass const methoden mag?

    [ Dieser Beitrag wurde am 08.07.2003 um 12:42 Uhr von PeterTheMaster editiert. ]



  • Hallo!

    Was hälst Du von const_mem_fun_t?

    Greetz
    Richie



  • oder hat der standard etwas analog zu mem_fun_t, dass const methoden mag?

    Das mem_fun_t aus dem Standard hat nichts gegen const-Methoden. Das ist ein Problem der VC-Lib.


Anmelden zum Antworten