[计算机科学经

Abs c templates the complete guide 142 static

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: 用,因此它不會 對 shell()的執行速度造成影響。不幸是許多編譯器會給出㆒個警告,說 ShallowChecks class 和其成員沒有被用到。這裡我們使用了㆒個小技巧,藉由㆒個什麼都不做的 ignore()來抑制這 個警告,但是這樣做會增加程式碼的複雜度。 很明顯,寫出本例㆗的這種啞碼(dummy code)可能和寫出實作碼㆒樣複雜。為了控制複雜度 不讓它蔓生,把這㆒類小程式碼集合在某種程式庫㆗是很自然的作法。這㆒類程式庫可能包含 C++ Templates - The Complete Guide 6.6 Templates 的除錯(Debugging) 79 ㆒些巨集 macros) ( ,它們可以被展開為程式碼,當 template parameter 的替換物違反了 parameter 的 concept 概念) ( 時,這些巨集就能引發相應的錯誤訊息。這㆒類程式庫㆗最流行的稱為 Concept Check Library,是 Boost 程式庫的㆒部份(請參考 [BCCL])。 不幸的是這種技術的可移植性不高:不同編譯器之間的錯誤分析方式差異極大,有時在較高層 面㆖很難捕捉到問題。 6.6.3 長符號 ( Long Symbols ) 6.6.1 節, p.75 所分析的錯誤訊息,展現了 templates 的另㆒個問題:被具現化的 templates 程式碼 有可能導致很長的符號。例如前面用到的 std::string 可能被展開為: STL::basic_string<char,_STL::char_traits<char>, _STL::allocator<char> > 某...
View Full Document

Ask a homework question - tutors are online