[计算机科学经

计算机科学经

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: ,使能儘早判定 template arguments 是否滿足某㆒組約束條件:(1) 經由 某種語言擴展性質;(2) 儘早使用 template parameters。我們將在 13.11 節 p.218 簡單討論前㆒種 辦法。後㆒種辦法是藉由淺具現化(shallow instantiation)來曝露問題:安插㆒些用不到的程式 碼,它們不幹別的,只為了在「template arguments 無法滿足更深層 templates 的需求」時得以引 爆錯誤。 我們可以在 shell()㆗添加㆒段程式碼,試圖提領㆒個隸屬於 T::Index 型別的數值。例如: template <typename T> inline void ignore(T const&) { } template <typename T> void shell (T const& env) { class ShallowChecks { void deref(T::Index ptr) { ignore(*ptr); } }; typename T::Index i; middle(i); } 如果 T 型別使得 T::Index 無法被提領(dereferenced),那麼錯誤訊息就首先會針對 shell() 內的 ShallowCheckslocal class。注意,由於這個 local class 實際㆖並未被使...
View Full Document

This note was uploaded on 08/25/2012 for the course EECS 101 taught by Professor Wre during the Fall '12 term at Beacon FL.

Ask a homework question - tutors are online