ciao.
Sto cercando di capire come si crea un function object parametrizzato;
il primo parametro template(double) èil tipo di ritorno del function object , e la typelist , tratta da Loki sono i tipi dei parametri
codice:
// Define a Functor that accepts an int and a double and
// returns a double
Functor<double, TYPELIST_2(int, double)> myFunctor;
il function object viene poi specializzato cosi':
codice:
template <typename R>
class FunctorImpl<R, NullType>
{
public:
virtual R operator()() = 0;
virtual FunctorImpl* Clone() const = 0;
virtual ~FunctorImpl() {}
};
template <typename R, typename P1>
class FunctorImpl<R, TYPELIST_1(P1)>
{
public:
virtual R operator()(P1) = 0;
virtual FunctorImpl* Clone() const = 0;
virtual ~FunctorImpl() {}
};
template <typename R, typename P1, typename P2>
class FunctorImpl<R, TYPELIST_2(P1, P2)>
{
public:
virtual R operator()(P1, P2) = 0;
virtual FunctorImpl* Clone() const = 0;
virtual ~FunctorImpl() {}
};
mi chiedevo dato che esistono le tuple nel tr1 , fosse possibile utilizzare in qualche modo quelle.
è possibile specializzare un template che accetta delle tuple in base ai tipi della tuple?
Il problema ruota attorno ai parametri che devo passare al FunctorImpl(implementazione del function object) i parametri devono avere un tipo e un valore di quel tipo ew possono essere molti.
Sul libro consiglia di usare un numero alto di parametri nella typelist, ad es 12 per risolvere i problemi.
se potessi uare le tuple non dovrei integrare loki nei miei progetti , almeno per quanto riguarda i functon object parametrizzati, che sono alla fine degli oggetti command(secondo gof).
il fatto è che queste typelist sono spesso comode , ma hanno un implementazione incasinata.
Forse è possibile includere solo i file di questetypelist nel mio sorgente, voi mi consigliereste di utilizzarle? o di farne a meno?
grazie.