Boost logo

Boost Users :

From: Hicham Mouline (hicham_at_[hidden])
Date: 2008-03-18 15:50:33


I realize one thing more. My code refers to cT and tT template arguments:

Template <typename cT, typename tT, int n>
void function(const cT& o)
 ....
 double array[n];

 if (n==2)
   binomial code depends on cT,tT (array[0] array[1])
 else if (n==3)
   trinomial code depends on cT,tT (array[0] array[1] array[2])
 else
 ....

The "do_n_specific_code" cannot therefore be just a function...
I'll take a wrapping class that includes a public static function with same
signature,
And the class can be partially specialized.

-----Original Message-----
From: boost-users-bounces_at_[hidden]
[mailto:boost-users-bounces_at_[hidden]] On Behalf Of Steven Watanabe
Sent: 18 March 2008 18:47
To: boost-users_at_[hidden]
Subject: Re: [Boost-users] template int argument

AMDG

Hicham Mouline wrote:
> hi,
>
> I have a template function <typename cT, typename tT, int n>
> {
> ....
> double array[n];
>
> if (n==2)
> binomial code
> else if (n==3)
> trinomial code (array[0] array[1] array[2])
> else
> ....
>
>
> compiler tries to compile the "trinomial code" code even when the template

> is instantiated with n=2,
> and that gives warnings because of array[2]
>
> Is there a way to make the compiler ignore the non-binomial code ?
> rds,

You'll have to split it out into a separate function and use template
specialization/overload resolution.

template<int n>
void do_n_specific_code(double (&array)[n]);

template<typename cT, typename tT, int n>
void f() {
    double array[n];

    do_n_specific_code(array);

}

In Christ,
Steven Watanabe

_______________________________________________
Boost-users mailing list
Boost-users_at_[hidden]
http://lists.boost.org/mailman/listinfo.cgi/boost-users


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