我看到@GMan爲variadic模板實現了a version of sizeof...
,其中(據我所知)等同於內置的sizeof...
。這不符合第二個設計原則:prefer libraries to language extensions?爲什麼C++ 0x中有sizeof ...運算符?
9
A
回答
7
從Variadic Templates (Revision 3) (N2080=06-0150),第6頁:
雖然不是絕對必要的(我們可以實現
count
沒有這個功能),檢查參數包的長度是一種常見的操作,值得一個簡單的語法。此外,當可變參數模板與概念組合時,這種操作對於類型檢查原因可能是必需的;參見第3.3節。
(第3.3節有關的概念現在是無關緊要的談話。)
4
sizeof...
只是糖,我想。
sizeof
的確核心,以語言爲...
,雖然一個功能可能存在,我們已經有sizeof
和...
保留,所以我們還不如讓可以方便地獲取計數的方式。
相反,如果sizeof
和...
沒有保留,添加這樣的東西的想法可能會失敗,因爲新的關鍵詞往往會被忽視。 (越少越好。)
相關問題
- 1. 爲什麼sizeof運算符不顯示大小爲20?
- 2. 爲什麼在java中沒有sizeof
- 3. 爲什麼我的homeopen sizeof運算符需要char *轉換?
- 4. sizeof運算符的問題
- 5. 爲什麼std :: hash沒有在C++ 0x中爲std :: weak_ptr定義?
- 6. C++ 0x:條件運算符,xvalues和decltype
- 7. C++ 0x中wchar_t的命運是什麼?
- 8. C++靜態數組和sizeof運算符
- 9. C++ - 什麼是運算符。*?
- 10. sizeof運算
- 11. 爲什麼C中的枚舉沒有增加運算符?
- 12. 爲什麼C#中沒有|| =或者&& =運算符?
- 13. 爲什麼sizeof('a')在C中是4?
- 14. 「| =」運算符在C中表示什麼?
- 15. **運算符在C中表示什麼?
- 16. 「| =」運算符在C#中做什麼?
- 17. 什麼是C++中的static_case運算符?
- 18. 什麼是C#中的「??」運算符?
- 19. SQL中的IN運算符和=運算符有什麼區別?
- 20. C++ 0x中沒有Unicode碼流?爲什麼?
- 21. 旋轉位,使用sizeof運算符
- 22. C++ sizeof運算符如何計算大小?
- 23. 爲什麼C沒有邏輯賦值運算符?
- 24. 關於C++中sizeof運算符的功能
- 25. sizeof運算符在C中如何工作?
- 26. 爲什麼sizeof(string)== 32?
- 27. 爲什麼sizeof(a)16? (sizeof int是4)
- 28. 什麼是c運算符>>
- 29. C爲什麼sizeof('a')= 4且sizeof(char)= 1?
- 30. 什麼是<=用C++運算符
的sizeof''...也可以應用同樣很好地模板和功能參數組。所以'sizeof ...(T)'和'sizeof ...(t)'工作得很好。我相信基於庫的解決方案可以與模板或函數參數包一起工作,但不適用於兩者。因爲一個擴展產生一系列類型,而另一個擴展產生一系列表達式。也許把它寫成'template struct count;',然後將包傳遞爲'count '可以工作。由於'sizeof'可以處理似乎可以工作的類型和表達式,但它顯然更醜陋:) –
2010-05-09 14:37:09