}
-template <typename R, typename P>
+template <class R, class P>
inline R convert(const P& p)
{
return R(p);
return Vector3(vec[0], vec[1], SCALAR(0.0));
}
-template <typename P>
+template <class P>
struct cast
{
cast(const P& p) : param(p) {}
- template <typename R>
+ template <class R>
operator R() { return convert<R,P>(param); }
private:
const P& param;
// Derivative_Type operator+(const Derivative_Type& other) const
// Derivative_Type operator*(const Derivative_Type& other) const
-template<typename S, typename D>
+template <class S, class D>
inline D evaluate(const S& state, Scalar t)
{
D derivative;
return derivative;
}
-template<typename S, typename D>
+template <class S, class D>
inline D evaluate(S state, Scalar t, Scalar dt, const D& derivative)
{
state.step(derivative, dt);
}
-template<typename S, typename D>
+template <class S, class D>
inline void euler(S& state, Scalar t, Scalar dt)
{
D a = evaluate<S,D>(state, t);
state.step(a, dt);
}
-template<typename S, typename D>
+template <class S, class D>
inline void rk2(S& state, Scalar t, Scalar dt)
{
D a = evaluate<S,D>(state, t);
state.step(b, dt);
}
-template<typename S, typename D>
+template <class S, class D>
inline void rk4(S& state, Scalar t, Scalar dt)
{
D a = evaluate<S,D>(state, t);