您好,登錄后才能下訂單哦!
這篇文章主要講解了“C++怎么為模板參數定義概念”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++怎么為模板參數定義概念”吧!
T.10:為所有的模板參數定義概念
Correctness and readability. The assumed meaning (syntax and semantics) of a template argument is fundamental to the interface of a template. A concept dramatically improves documentation and error handling for the template. Specifying concepts for template arguments is a powerful design tool.
正確性和可讀性。一個模板參數的假定含義(語法和語義)是模板接口的基礎。概念大幅度改善了模板的文檔化和錯誤處理。為模板參數定義概念是一個強有力的設計工具。
Example(實例)
template<typename Iter, typename Val>
// requires Input_iterator<Iter>
// && Equality_comparable<Value_type<Iter>, Val>
Iter find(Iter b, Iter e, Val v)
{
// ...
}
or equivalently and more succinctly:
或者使用下面功能等價但更簡潔的方式:
template<Input_iterator Iter, typename Val>
// requires Equality_comparable<Value_type<Iter>, Val>
Iter find(Iter b, Iter e, Val v)
{
// ...
}
"Concepts" are defined in an ISO Technical Specification: concepts. A draft of a set of standard-library concepts can be found in another ISO TS: ranges Concepts are supported in GCC 6.1 and later. Consequently, we comment out uses of concepts in examples; that is, we use them as formalized comments only. If you use GCC 6.1 or later, you can uncomment them:
“概念”被ISO技術規格:concepts定義。一套標準庫concepts的初步版本可以在另一個ISO技術規格:ranges中找到。GCC6.1以后都支持concepts。因此我們在實例代碼中注釋掉使用concepts的部分;也就是說我們只是將它們用作標準的注釋。如果你使用GCC6.1之后的版本,可以打開注釋。
template<typename Iter, typename Val>
requires Input_iterator<Iter>
&& Equality_comparable<Value_type<Iter>, Val>
Iter find(Iter b, Iter e, Val v)
{
// ...
}
Plain typename (or auto) is the least constraining concept. It should be used only rarely when nothing more than "it's a type" can be assumed. This is typically only needed when (as part of template metaprogramming code) we manipulate pure expression trees, postponing type checking.
直接的類型名(或auto)是最小約束的概念。它應該被極少使用,僅限于表現“它是一個類型”。這通常只在我們操作純表達式樹,延遲類型檢查時有(作為模板元編程的一部分)存在的必要。
感謝各位的閱讀,以上就是“C++怎么為模板參數定義概念”的內容了,經過本文的學習后,相信大家對C++怎么為模板參數定義概念這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。