Figure 2: The base template class BaseTest32
template<typename I1, typename I2, typename I3, typename O1, typename O2> class BaseTest32 { public: BaseTest32(){} bool run(int first, int last, std::fstream &fout); virtual void apply(const I1 &, const I2 &, const I3 &, O1 &, O2&)=0; virtual const char *getName() const=0; protected: void addCase(const I1 &i1, const I2 &i2, const I3 &i3, const O1 &o1, const O2 &o2); private: std::vector<I1> i1s; std::vector<I2> i2s; std::vector<I3> i3s; std::vector<O1> o1s; std::vector<O2> o2s; };