template<typename Curve>
class SpotCurve1D
{
public:
typedef SpotCurveTraits<Curve> CurveTraits;
typedef typename CurveTraits::tType tType;
typedef typename CurveTraits::fType fType;
fType GetSpot(tType) const;
template<typename Interp, typename Extrap>
fType GetSpot(tType,
typename boost::call_traits<Interp>::param_type= Interp(),
typename boost::call_traits<Extrap>::param_type= Extrap() ) const;
...
};
template<typename Curve>
inline typename SpotCurveTraits<Curve>::fType
SpotCurve1D<Curve>::GetSpot(tType t) const
{
return ...;
}
template<typename Curve>
template<typename Interp, typename Extrap>
inline typename SpotCurveTraits<Curve>::fType
SpotCurve1D<Curve>::GetSpot(tType t,
typename boost::call_traits<Interp>::param_type i= Interp(),
typename boost::call_traits<Extrap>::param_type e= Extrap() ) const
{
....
}