Hello,
I have the following template
template<typename C>
class X
{
public:
template
void Get (int,
typename boost::call_traits<Interp>::const_reference=
Interp(),
typename boost::call_traits<Extrap>::const_reference=
Extrap() ) const;
};
template<typename C>
template
inline void X<C>::Get(int, typename
boost::call_traits<Interp>::const_reference i,
typename boost::call_traits<Extrap>::const_reference e ) {
// when I get here,
i.mOrder is not 2 (0)
e.mOrder is not 2 (23142343)
}
class P {
public:
static const size_t defaultInterpolationOrder = 2; // quadratic
polynomial
Polynomial1D(size_t order =defaultInterpolationOrder)
: mOrder(order)
{}
Private:
size_t mOrder;
};
1 example of call is
x.template GetSpot( 5 );
when I debug this P's ctor is never called and mOrder is never 2
Is my GetSpot method valid, the construction of the temporary should be
bound to the const ref
const P&
and the temporary should have finished being constructed before we go inside
the Get() method.
Is there an issue with the definition of Get being out of classe?
Am I calling call_traits<P>::const_reference in a wrong way?
VS2005SP1
Regards,