2010-05-05 8 views

Odpowiedz

7

Od Variadic Templates (Revision 3) (N2080=06-0150), strona 6:

Chociaż nie jest to bezwzględnie konieczne (możemy realizować count bez tej funkcji), sprawdzając długość paczki parametru jest częstą operacją zasługuje na prostą składnię. Co więcej, operacja ta może stać się niezbędna ze względu na sprawdzanie typu, gdy szablony variadyczne są łączone z koncepcjami; patrz punkt 3.3.

(sekcja 3.3 mówi o koncepcji, które teraz nie ma znaczenia.)

+1

... '' sizeof można również zastosować równie dobrze do szablonu i parametrów funkcja opakowaniach. Więc 'sizeof ... (T)' i 'sizeof ... (t)' działają równie dobrze. Rozwiązanie oparte na bibliotece działa z pakietami parametrów lub szablonów, ale nie z obydwoma, jak sądzę. Ponieważ jedno rozwinięcie tworzy ciąg typów, a drugie rozwinięcie tworzy sekwencję wyrażeń. Może napisanie go jako 'struct struct count;' a następnie podanie pakietu jako 'count ' może działać. Ponieważ 'sizeof' może obsłużyć oba typy i wyrażenia, które wydają się działać, ale jest wyraźnie brzydsze :) –

4

sizeof... to tylko cukier, myślę.

sizeof jest rzeczywiście rdzeń języka jak ... i chociaż countof funkcja mogła istnieć już mamy sizeof i ... zastrzeżone więc równie dobrze możemy zrobić to wygodne, aby dostać się liczyć w ten sposób.

W przeciwieństwie do tego, jeśli sizeof i ... nie były zarezerwowane, pomysł dodania takiej rzeczy prawdopodobnie by się nie powiódł, ponieważ nowe słowa kluczowe są zwykle niezadowolone. (Im mniej tym lepiej).