Új hozzászólás Aktív témák

  • jattila48

    aktív tag

    Egy int paraméterű template-et szeretnék explicit példányosítani egy bizonyos egész számig az összes ennél kisebb argumentummal. Hogy lehetne ezt egyszerűen megtenni?
    template<int N> struct P{
    int f();
    };

    Ha pl. 3-ig akarom példányosítani, akkor ne kelljen 3-szor kiírni:

    template struct P<0>;
    template struct P<1>;
    template struct P<2>;

    hanem rekurzívan valahogy így:

    template <int N> struct Instantiate
    {
    //Instantiate():x(i.p.f()){}
    P<N> p;
    Instantiate<N-1> i;
    int x;
    };

    template <> struct Instantiate<0>
    {
    P<0> p;
    };

    template struct Instantiate<3>;

    Ezzel az a probléma, hogy elvégzi a template példányásítását a megadott argumentumig minden egész számra, azonban a tagfüggvényeket nem példányosítja, ha csak a Instantiate template ctor-ában meg nem hívom azokat (kikommentezett sor). Ha kiírom a három explicit példányosítást, akkor persze a tagfüggvények is példányosulnak, de így nem. Szóval erre a problémára kellene valami szebb megoldás.

Új hozzászólás Aktív témák

Hirdetés