回答
從標準引用鬆散:
numeric_limits
不應專門用於非算術標準類型(例如complex<T>
)「[S]的
shared_ptr
pecializations應複製構造,CopyAssignable,和LessThanComparable [和]可轉換爲bool
。「「的
weak_ptr
專業化應是可複製構造和CopyAssignable。」「[T] emplate專業化[中
std::hash
]應符合類模板哈希的要求。」<type_traits>
中的任何內容:「除非另有說明,否則爲本子節中定義的任何類模板添加專業化的程序的行爲是未定義的。 (僅明確允許common_type
的一些專業化)區域設置有一定需要專業化。
istreambuf_iterator
的所有特化應該有一個簡單的複製構造函數,一個constexpr默認構造函數和一個簡單的析構函數。「實例化類模板
complex
對於float,double或long double以外的任何類型的影響未指定。」我認爲這意味着定義這樣的其他專業化是毫無意義的。「
atomic
模板的專業化和實例化應該有一個刪除的拷貝構造函數,一個刪除的拷貝賦值操作符和一個constexpr值構造函數。」「不建議使用類模板
unary_function
和binary_function
。程序不應聲明這些模板的特化。」
當然總體條款17.6.4.2.1,句子1(感謝@sehe和@curiousguy)的和:
如果其添加聲明或定義一個C++程序的行爲是未定義除非另有指定,否則命名空間std或命名空間std中的 命名空間。程序可以添加一個模板專業化 任何標準庫模板,空間std只有在聲明依賴於用戶定義類型 和專業化符合原始模板的標準庫的要求,並沒有明確禁止 。
和句子2:
一個C的,如果它聲明
標準庫模板類的成員函數的明確分工++程序是未定義行爲,或
標準庫類或類模板的任何成員函數模板的顯式特化,或
標準庫類或類模板的任何成員類模板的顯式或部分特化。
程序可以顯式實例在標準庫中定義的模板,只有在聲明 依賴於用戶定義類型的名稱和實例化符合原始模板的標準庫要求 。
- 1. 爲什麼我不能專注於Opera?
- 2. ``不命名類型`錯誤`命名空間標準;`和文件
- 3. 什麼是名稱空間「標準」?
- 4. 爲什麼我不能專注於功能模板?
- 5. 什麼是加載到標準命名空間?
- 6. 我可以導入一個命名空間,但不能使用
- 7. 命名空間和類名稱準則
- 8. 爲什麼命名空間的命名約定不適用於我的Enum?
- 9. 爲什麼我不能專注於這樣的錨點?
- 10. 注:命名空間
- 11. 向std名稱空間注入專門化可以嗎?
- 12. 命名空間標準,ISAPI文件夾
- 13. 標準命名空間問題
- 14. .NET 4.5命名空間'標準'
- 15. C++標準默認命名空間
- 16. 標準庫實現可以專用於標準類型嗎?
- 17. Javascript命名空間+ onchange =不可能?
- 18. 爲什麼.NET Core和xUnit不能識別我導入的命名空間?
- 19. 屬於覆蓋命名空間的命名空間會發生什麼?
- 20. 什麼命名空間用於刪除以下錯誤?
- 21. 爲什麼不允許模板專門化在不同的命名空間中?
- 22. WPF命名空間標記xxx不存在於XML命名空間
- 23. 爲什麼在外部命名空間中定義完全限定的函數是不可能的?我可否知道標準說的是什麼?
- 24. 命名空間點命名空間和嵌套命名空間有什麼區別?
- 25. 爲什麼我不得不使用完整的命名空間?
- 26. DOM注射命名空間
- 27. 爲什麼有些升壓功能不需要命名空間
- 28. 什麼是「DescriptionElement」絕不能在WSDL 2.0命名空間「
- 29. XmlSerializer命名空間不可見,爲什麼?
- 30. 導入命名空間類專門
什麼,你到底在尋找答案?真的,如果你想要專門化一些東西,你必須參考規範。大多數標準庫組件對專業化都有要求。對於Stack Overflow答案來說,你可以並且不能專門化的完整答案以及對專業化的限制是太長了。 – 2011-12-15 00:06:21
通過「專業功能」,我假設你的意思是「專門功能模板」?順便說一下,C++ 11是否允許部分功能模板專門化? – fredoverflow 2011-12-15 07:42:27