You have one or two type name declarations in the wrong place:
template<class DecayerPolicy> class CDecayer: public DecayerPolicy, public CStateUpdater { public: virtual void UpdateState(CAtom* patom) { typedef typename DecayerPolicy::indexpair indexpair; typedef typename std::map<indexpair, double> mymap; typedef typename mymap::const_iterator const_iterator;
Although personally I would do this:
template<class DecayerPolicy> class CDecayer: public DecayerPolicy, public CStateUpdater { typedef typename DecayerPolicy::indexpair indexpair; typedef typename std::map<indexpair, double> mymap; typedef typename mymap::const_iterator const_iterator; typedef typename mymap::value_type value_type;
source share