2011-06-15 35 views
23

Uygulamam için variadic şablon özelliğini kullanmak istiyorum ancak nesnelerin değere göre geçirilmesini istemiyorum (nesnelerimde oldukça karmaşıktır). Onları referans olarak iletmek istiyorum (işaretçi olarak değil).C++ 0x variadic template başvuruya göre geçer

void func() 
{ 
} 

template<typename Function1, typename... FurtherFunctions> 
void func(Function1 f1, FurtherFunctions... further_functions) 
{ 
    // doing some processing here... 
} 

Argümanları nasıl referans alarak geçirip kopyalanmadıklarından emin olabilir miyim?

cevap

28

Sadece ki:, const Args & ... args için

template <typename ...Args> 
int myfunction(Args & ... args) 
{ 
    /* ... */ 
} 

aynı Args && ... args vb

+0

Args & ve Args arasındaki fark nedir &&? – usman

+2

'Args &&', kendi kodunuzda yazmanız gerekmeyecek bir referans değerdir. Sadece bunu söylüyorum çünkü var ve ara sıra [görebilirsiniz] (http://stackoverflow.com/questions/6114067/how-to-emulate-c-array-initialization-int-arr-e1-e2- e3-davranış/6272491 # 6272491). –

+3

Aslında '&&' burada anlamlıdır, çünkü muhtemelen std :: forward'unu kullanmak isteyeceksiniz. –

İlgili konular