virtual function templates



  • Leute, packt mal die Kanonen wieder ein, ihr verschreckt die Spatzen.

    struct A 
     { 
       virtual void foo(std::list<std::unique_ptr<A>>& as) 
       {} 
     };
    

    Einfache und oft anwendbare Lösung:

    struct A 
    { 
       template <class T>
       void foo(T const& as)
       {
           // ... Vorbereitung ...
    
           BOOST_FOREACH(typename T::reference a, as) // ich hoffe das typename T::reference passt, aber wenn nicht so, dann so ähnlich :D
               do_one_foo(*get(a));
    
           // ... Nacharbeiten ...
       }
    
    private:
       virtual void do_one_foo(A& a) 
       {} 
    };
    

    Tadaaaaa. Und ganz ohne Type-Erasure oder 100 Hilfsklassen 😉



  • pumuckl schrieb:

    Range operator"" _m(char const* meters); //yes, we can in C++11!
    

    Warum char* und nicht long double ?



  • knivil schrieb:

    Warum char* und nicht long double ?

    Touché, natürlich 🙂


Anmelden zum Antworten