首頁  >  文章  >  後端開發  >  std 命名空間中的專用範本有哪些限制?

std 命名空間中的專用範本有哪些限制?

Susan Sarandon
Susan Sarandon原創
2024-10-30 18:59:30286瀏覽

 What are the Restrictions on Specializing Templates within the std Namespace?

std 命名空間內的專業化限制

std 命名空間允許對其模板進行明確專業化,但存在特定限制。

禁止特化的模板:

根據C 標準,以下模板不能在std 命名空間內特化:

  • numeric_limits for non -算術類型(例如,complex): 僅算術類型可以特化。
  • shared_ptr 和weak_ptr: 必須滿足可複製性、可分配性和比較的特定要求。
  • hash: 特化必須符合標準雜湊類別範本的要求。
  • 類型特徵 (): 特化行為除非明確允許,否則未定義(例如,僅允許某些 common_type 專業化)。
  • 語言環境: 具有所需的專業化。
  • istreambuf_iterator: 需要簡單的複製建構子、預設建構子和析構函式。
  • 非浮點類型的複雜性:為其他類型定義專業化被認為是毫無意義的。
  • 原子: 必須刪除複製操作和 constexpr 值建構子。
  • unary_function 和 binary_function: 專門化已棄用並禁止。

常規限制:

  • 任何專業化不得與原始範本要求衝突。
  • 除非明確指定,否則禁止標準函式庫範本的明確專業化和實例化。
  • 標準函式庫類別的成員函式、函式範本或成員類別範本的明確特化是未定義的行為。

以上是std 命名空間中的專用範本有哪些限制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn