2013-06-13 18 views
6

Przeczytałem Modern C++ Design i przyszło mi do głowy, że konstrukt typu typograf może być wymieniony na szablony variadic. Obie wydają się polegać na rekursji, aby przetworzyć pierwszy typ na liście i pozostałą część listy osobno. Czy jest coś, co pozwala ci na to, żeby szablon wariatów nie był?Czy typelists zostały całkowicie zastąpione szablonami variadic?

Odpowiedz

8

Typelists pozwalają ci na kilka rzeczy. Na przykład, nie można mieć o zmiennej liczbie argumentów pakiet argumentu jako skutek metafunkcji - tam po prostu nie sposób wyrazić coś takiego:

template <typename... Args> 
struct argpack_id { 
    typedef Args result; 
}; 

Można to zrobić z typelists.

Z drugiej strony, powinieneś wdrożyć samej typelist jak

template <typename... Args> 
struct TypeList {}; 
Powiązane problemy