diff -c /cygdrive/d/historic/c42/algebra.cpp ./algebra.cpp *** /cygdrive/d/historic/c42/algebra.cpp Tue Nov 6 05:52:16 2001 --- ./algebra.cpp Fri Mar 19 19:35:16 2004 *************** *** 63,69 **** return result = g[i0]; } ! template const QuotientRing::Element& QuotientRing::MultiplicativeInverse(const Element &a) const { Element g[3]={m_modulus, a}; #ifdef __BCPLUSPLUS__ --- 63,69 ---- return result = g[i0]; } ! template const CPP_TYPENAME QuotientRing::Element& QuotientRing::MultiplicativeInverse(const Element &a) const { Element g[3]={m_modulus, a}; #ifdef __BCPLUSPLUS__ diff -c /cygdrive/d/historic/c42/config.h ./config.h *** /cygdrive/d/historic/c42/config.h Tue Nov 6 05:52:16 2001 --- ./config.h Fri Mar 19 19:39:28 2004 *************** *** 161,166 **** --- 161,172 ---- #pragma warning(disable: 4250 4660 4661 4786 4355 4800) #endif + #if defined(_MSC_VER) && (_MSC_VER >= 1300) + #define CPP_TYPENAME typename + #else + #define CPP_TYPENAME + #endif + NAMESPACE_END #endif diff -c /cygdrive/d/historic/c42/eprecomp.cpp ./eprecomp.cpp *** /cygdrive/d/historic/c42/eprecomp.cpp Tue Nov 6 05:52:16 2001 --- ./eprecomp.cpp Fri Mar 19 19:46:20 2004 *************** *** 48,54 **** eb.push_back(BaseAndExponent(m_bases[i], e)); } ! template ExponentiationPrecomputation::Element ExponentiationPrecomputation::Exponentiate(const Integer &exponent) const { std::vector > eb; // array of segments of the exponent and precalculated bases eb.reserve(m_bases.size()); --- 48,54 ---- eb.push_back(BaseAndExponent(m_bases[i], e)); } ! template CPP_TYPENAME ExponentiationPrecomputation::Element ExponentiationPrecomputation::Exponentiate(const Integer &exponent) const { std::vector > eb; // array of segments of the exponent and precalculated bases eb.reserve(m_bases.size()); diff -c /cygdrive/d/historic/c42/polynomi.h ./polynomi.h *** /cygdrive/d/historic/c42/polynomi.h Tue Nov 6 05:52:18 2001 --- ./polynomi.h Fri Mar 19 19:45:06 2004 *************** *** 304,311 **** public: typedef T CoefficientRing; typedef PolynomialOver Element; ! typedef Element::CoefficientType CoefficientType; ! typedef Element::RandomizationParameter RandomizationParameter; RingOfPolynomialsOver(const CoefficientRing &ring) : m_ring(ring) {} --- 304,311 ---- public: typedef T CoefficientRing; typedef PolynomialOver Element; ! typedef CPP_TYPENAME Element::CoefficientType CoefficientType; ! typedef CPP_TYPENAME Element::RandomizationParameter RandomizationParameter; RingOfPolynomialsOver(const CoefficientRing &ring) : m_ring(ring) {}