overloading non-template member functions with template member functions

H

Hicham Mouline

Hello,

I have this code
http://codepad.org/CDOFhSqZ

I have a non templated member function GetSpot(tType) const
and a templated one.

Besides, argument 2 and 3 of the templated have default arguments.

Users of this class call either

class.GetSpot( 10. );

or

class.GetSpot<Linear, Polynomial>( 15. ); // case 2

or

class.GetSpot<Linear, Linear>( 15., Linear(5), Linear(7) );

These actual calls happen in 1 translation unit and so the member functions
are instantiated.

Question 1 : Is this valid C++03?
Question 2 : I would like opinions about the style
Question 3 : with vs2005 debugger, arg2 and arg3 in case 2 are not
constructed properly sometimes.

Question 4: would removing the non templated member, and setting default
template args for Interp and Extrap
be possible with at the same time having default formal args 2 and 3.
Would this then be a better style?

PS: typename boost::call_traits<Interp>::param_type is simply
const Interp&
in this case

regards,
 
M

Michael DOUBEZ

Hicham said:
Hello,

I have this code
http://codepad.org/CDOFhSqZ

I have a non templated member function GetSpot(tType) const
and a templated one.

Besides, argument 2 and 3 of the templated have default arguments.

Users of this class call either

class.GetSpot( 10. );

class is a reserved word. I assume this is a variable of type
or

class.GetSpot<Linear, Polynomial>( 15. ); // case 2

or

class.GetSpot<Linear, Linear>( 15., Linear(5), Linear(7) );

These actual calls happen in 1 translation unit and so the member functions
are instantiated.

Question 1 : Is this valid C++03?

I suppose this is not actual code, SpotCurve1D would have only private
members and mContainerSize is not present.

The best solution is activating proper flags on your compiler to check
for conformance.
Question 2 : I would like opinions about the style

* What do fType and tType stand for ?
* What's the point of boost::call_traits<Interp>::param_type in this case ?
Question 3 : with vs2005 debugger, arg2 and arg3 in case 2 are not
constructed properly sometimes.

Track construction/destruction to check but I don't see the problem in
your code.
Question 4: would removing the non templated member, and setting default
template args for Interp and Extrap
be possible with at the same time having default formal args 2 and 3.
Yes, use const Interp& instead of boost.
Would this then be a better style?

Everything that make the code clearer is beeter style.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top