kontrol tipi gibi ek faydaları ile, C++ 0x Variadic Templates ile kaplı olabilir. Bir örnek vereyim. 1985 yılında differential execution tekniği üzerine tökezledim ve kullanıcı arayüzlerini programlamak için gerçekten iyi bir araç olduğunu düşünüyorum. bir ayrıştırıcı yazmaya olurdu bunu yapmak için, Şimdi
void deFoo(..args..){
if (mode & 1){x = y;}
{int svmode = mode; if (deIf(..some test..)){
deBar(((mode & 1) arg1 : 0), ...)
} mode = svmode;}
{int svmode = mode; while(deIf(..another test..)){
...
} mode = svmode;}
...
}
gerçekten iyi bir yol: Böyle kontrol yapısı ile
void Foo(..args..){
x = y;
if (..some test..){
Bar(arg1, ...)
}
while(..another test..){
...
}
...
}
ve Tepe yapabilecek: Temelde, basit yapılı böyle programlar alır C veya taban dili ne olursa olsun, ve sonra ayrıştırmak ağacını yürü, istediğim kodu oluşturmak. (Lisp'de yaptığım zaman, bu bölüm kolaydı.)
Ancak C, C++ ya da her neyse bir çözümleyici yazmak isteyen var mı? Ben C# bunu yaparken
void deFoo(..args..){
PROTECT(x = y);
IF(..some test..)
deBar(PROTECT(arg1), ...)
END
WHILE(..another test..)
...
END
...
}
Ancak, onların bilgelik birileri makro kötüydü karar verdi ve ben don: Böyle kod yazmak, böylece
Yani, bunun yerine, sadece makro yazma C# ayrıştırıcısı yazmak istemiyorum, bu yüzden kod nesnesini el ile yapmalıyım. Bu bir kraliyet acısıdır, ama yine de bu şeyleri kodlamanın olağan yoluna göre buna değer.
+1 Teşekkürler Mike. Bu en iyi cevaptır :) – Viet