Dzisiaj omówię ostatnie z podstawowych zastosowań dla metaprogramowania. Nie przeciągając dziś będzie o „pętlach bez pętli”. W wielu przypadkach (a może i nie w aż tak wielu ale w kilku na pewno) mamy do czynienia z pętlą której ilość iteracji jest znana już w momencie kompilacji programu. W takich sytuacjach kompilator potrafi sam powielić kod zachowując odpowiedni indeks iteratora np.: for(int i=0; i<3; i++) { func(i); } func(0); func(1); func(2); Taki kod zadziała nieco szybciej gdyż nie ma potrzeby inkrementowania zmiennej i oraz jej alokacji dealokacji. Niestety nie mamy gwarancji że kompilator tak postąpi. Prezentowane zachowanie zależne jest od samego kompilatora jego wersji oraz wykorzystywanych optymalizacji. Aby wymusić wygenerowanie kodu przez kompii lator można skorzystać z template'ów. A oto rozwiązanie problemu void func(int i){std::cout<< i << std::endl;} template<int i, typename FuncType> class MetaInlineLoop { publi