2009-08-10 127 views
22

我聽說過關於C++ 0x的所有新的(on /。),沒有概念了,但我不知道它們是什麼?有人可以向我解釋嗎?什麼是概念?

回答

25

概念是一個通用的編程功能,它允許某人寫模板代碼來指定哪些類型的參數需要滿足的要求。

例如,某些集合類型需要集合的類型參數來定義<運算符。所以程序員可能會定義一個名爲LessThanComparable的概念,它告訴編譯器模板類的類型參數需要定義運算符<。如果模板用戶然後嘗試使用不具有LessThanComparable概念的類型實例化模板(即,沒有運算符<函數),則編譯器可以發出簡單的錯誤消息,而不是與模板化代碼關聯的錯誤消息的洪流。編譯器也可以利用概念提供的額外信息來生成更高效的代碼。

這是一些過於簡單的事,但我認爲它給了你概念背後的總體思路。

如果您想嘗試一些概念功能,請查看Boost.Concept Check庫。我不認爲它提供了標準中的全部功能,但它是一個很好的開始。

您可能還想看看ConceptC++,這裏有一個很好的概念定義。

+0

呵呵,這幾乎就是EBGreen的鏈接所說的!奇怪的巧合,嗯? – jkeys 2009-08-10 02:07:56

+2

不是。我在近一年前第一次發表該文章時閱讀了這篇文章。我確實有能力保留信息:-) – Ferruccio 2009-08-10 11:23:48

+0

很好的答案。這是我不敢問的關於C++的問題之一 – chester89 2009-08-10 14:44:43