Boost logo

Boost :

From: Dirk Gregorius (dirk_at_[hidden])
Date: 2004-11-02 08:12:35


I have a std::vector<boost::any> m_Processes containing several hydrological
processes where a process is implemented like this:

template<typename DerivedT>
class Process
  DerivedT& asDerived( void )
       return static_cast<DerivedT&>( *this );
  void Apply( Subbasin& subbasin )
       asDerived().Apply( subbasin );

Special Processes are derived from Process and pass their type as template
argument ( Barton and Nackman Trick ). I am writing a simulation software
for hydrological simulation and want to test if I can get a better
performance when getting rid of the virtual function overhead since all
types are know at compile time.

I want to iterate over all elements of m_Processes in a function void
AdvanceTyp( void ). The below implemention doens't work, but will show my

template<typename DerivedT>
void Subbasin::AdvanceTime( void )
    // Call Process::Apply for each element and pass a *this
    for_each( m_Processes.begin(),
                   bind2nd( mem_func_ref( Process<DerivedT>::Apply, *this )

At the moment the compiler can't resolve the template argument. How do I
have to implement the function, such that it can be resolved by the


Boost list run by bdawes at, gregod at, cpdaniel at, john at