[计算机科学经

V bv int main stdcout maxni7 ni42v

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: on templates 不允許擁有 template template parameters。 Template Template Argument 的匹配(matching) 如果你試圖使用㆖述新版 Stack,編譯器會報告㆒個錯誤:預設值 std::deque 不符合 template template parameter CONT 的要求。問題出在 template template argument 不但必須是個 template, C++ Templates - The Complete Guide 5 52 高階基本技術 而且其參數必須 嚴格匹配 它所替換之 template template parameter 的參數。 Template template argument 的預設值不被考慮,因此如果不給出擁有預設值的引數值時,編譯器會認為匹配失敗。 本例的問題在於:標準程式庫㆗的 std::deque template 要求不只㆒個參數。第㆓參數是個配置 器(allocator),它雖有預設值,但當它被用來匹配 CONT 的參數時,其預設值被編譯器強行忽 略了。 辦法還是有的。我們可以重寫 class 宣告式,使 CONT 參數要求㆒個「帶兩個參數」的容器: template <typename T, template <typename ELEM, typename ALLOC = std::allocator<ELEM> > class CONT = std::deque> class Stack { private: CONT<T> elems; // 元素 ......
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