ciao.
E' circa una settimana che sto cercando di studiare un po di programmazione generica , è molto affascinante e sto facendo delle prove anche al lavoro.
Una delle cose piu' importanti che non riesco a capire sono i traits.
prendiamo per esempio questo codice , tratto dal libro modern c++ design Andrei Alexandrescu , di cui ho capito l' 1% per adesso.
codice:
template <typename T, bool isPolymorphic>
struct NiftyContainerValueTraits
{
typedef T* ValueType;
};
template <typename T>
struct NiftyContainerValueTraits<T, false>
{
typedef T ValueType;
};
template <typename T, bool isPolymorphic>
class NiftyContainer
{
typedef NiftyContainerValueTraits<T, isPolymorphic> Traits;
typedef typename Traits::ValueType ValueType;
};
il typename usa Traits::ValueType come un tipo e dichiara un typedef(cioè un alias di tipo), ValueType da quello che ho capito adesso si puo utilizzare come un tipo.
e la stessa cosa er Traits.
ma in che modo lo posso cambiare?
richiamando
codice:
typedef NiftyContainerValueTraits<T, isPolymorphic> Traits;
perchè non ho ben capito neanche lo scopo , a cosa servono di preciso? ad avere dei tipi diversi a seconda dell' occorrenza?
è un metodo a me nuovo per il passaggio di paramtri penso di aver capito ,e a me servirebbe nel codice che sto scrivendo.
ps.
è tutto oggi che giro su google ma si trovano delle dimostrazioni un po criptiche , ed essendo alle prime armi chiedo a qualcuno di voi un aiutino.
grazie.