|
Boost Users : |
Subject: [Boost-users] default argument and call trait const_reference
From: Hicham Mouline (hicham_at_[hidden])
Date: 2009-04-09 09:52:39
Hello,
I have the following template
template<typename C>
class X
{
public:
template<typename Interp, typename Extrap>
void Get (int,
typename boost::call_traits<Interp>::const_reference=
Interp(),
typename boost::call_traits<Extrap>::const_reference=
Extrap() ) const;
};
template<typename C>
template<typename Interp, typename Extrap>
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<P,P>( 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,
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net