[ glorius @ 12.01.2008. 14:44 ] @
Sta mislite o tome? :)

Nov sam u toj oblasti pa ako imate neke linkove ili primercice, post :)

A da, svideo mi se koncept kreiranja unroll for petlje :), tako da, mislim da je dobra stvarcica ( u pojedinim slucajevima )
[ NastyBoy @ 12.01.2008. 23:56 ] @
To je gotovo trivijalni primer. Za neke prave stvari pogledaj, izmedju ostalog, sve radove na http://erdani.org/ i prouchi knjigu "Modern C++ Design" od Alexandrescu-a.
[ glorius @ 13.01.2008. 14:29 ] @
Hvala! Happy new Year! :)
[ glorius @ 18.01.2008. 20:04 ] @
Kniiga "Modern C++ Design" je opasna :)

Ljudi su digli ceo sistem programiranja na jos visi nivo. ( Do complex stuff at simple way and produce more complex programs ) (P.S Jedva ceka neki moderniji sistem programiranja :) )

Jos uvek sam sumnjicav prema statickom polimorfizmu ali, da li je ovo nov zanr programiranja? OOP kakvog sam ja znao je izgubio smek. Damned book :)


[ NastyBoy @ 19.01.2008. 01:57 ] @
Nije "nov", a nije ni preterano elegantan u trenutnoj inkarnaciji C++a (za neke lepshe detalje pogledaj jezik D).
Shta god radio (osim ako ne pishesh suve biblioteke) necesh moci bez dinamichkog polimorfizma. Izazov je naci pravi odnos.
[ glorius @ 19.01.2008. 11:17 ] @
Uvek sam se pitao kako stl::vector prihvata i pointere i obicne vrednosti i kako zna da li je pointer ili ne.

TypeTraits je mocna stvarcica :) Mogucnosti su ogromne!

NastyBoy, znas li jos neke primere gde se oni mogu koristiti?

Razmisljao sam, npr... Imamo klasu Brojevi, klasu Slova... I sada, zelimo da napravimo mehanizam za stampanje. Mozemo ih izvesti iz klase Prikaz da bi imali mogucnost da prikazujemo. Svaka klasa ce imati svoj mehanizam za prikazivanje. Tabla je objekat na kojem se prikazuju.

void Stampaj(Prikaz * p,Tabla * t)
{
p->PrikaziMe(t);
}

Brojevi su int, slova su char i svaka klasa moze sama sebe lepo da prikaze... Tabla ima mehanizam stampajInt(), stampajChar(), koje svaka klasa poziva.

A sa traits

Code:


template<class T>
Traits {};

template <>
class Traits<Brojevi>
{
  public:
     typedef int Type;
};

template <>
class Traits<Slova>
{
  public:
     typedef char Type;
};

template<class T>
void Stampaj(T * p, Table * t)
{
 
     T::Type data = p->GetData();

     t->Stampaj(data);
}



Krajnji rezultat da smo stampanje stavili u table i u odnosu na to, kakav tip podatka dobije, tabla stampa (int ili char).
Na jednom mestu imamo trazenu funkcionalnost i ako nam treba da menjamo prikaz char-ova, to mozemo uraditi na jednom mestu a ne u svim klasama gde se char-ovi prikazuju ( mada, sve vezano za prikazivanje moze stajati na jednom mestu i bez Traits - u klasi Prikaz ).

E sad... Ja vise volim design model gde klasa sama sebe iscrtava i koriscenje svih pogodnosti virtuelnih funkcija. Da li su Traits u ovom slucaju nepotrebno iskorisceni ( jos uvek sam pocetnik ) ili ovo moze biti jedan od nacina dizajniranja ovakvog programa koji moze olaksati stvari u pojedinim trenucima ( npr, dodavanje dodatnih funkcionalnosti kasnije sa manje izmena u kodu, itd?