[计算机科学经

Typesinline templatesconstants macros hpp h h hh

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: arguments。具體推導細節將在第 11 章講述。其他某些情況㆘,編譯器也可能動用推導機制。 如果所有 template arguments 都可以推導得出,你就無需在 function template 名稱後面加寫角 括號。 C++ Templates - The Complete Guide 8.3 Template Arguments(模板引數) 105 8.3.1 Function Template Arguments(函式模板引數) 你既可以明白指定 function template 的 template arguments,也可以讓它們被編譯器推導出來。例 如: // details/max.cpp template <typename T> inline T const& max (T const& a, T const& b) { return a < b ? b : a; } int main() { max<double>(1.0, -3.0); max(1.0, -3.0); max<int>(1.0, 3.0); } // explicit template arguments // template arguments 被隱式推導為 double // 明確指定<int> 以抑制推導,從而令引數型別為 int 某些 template arguments 無法被推導獲得 (見 11 章) 。你最好把這㆒類參數放在 template parameter list 的最前面,這樣客戶端(呼叫者)只需明白指定編譯器無法推導的那些引數即可,其餘引數 仍可被自動推導而得。例如: // details/implicit.cpp template <typename DstT, typename SrcT> inline DstT implicit_cast (SrcT const& x) // SrcT 可被推導,但 DstT 無法推導。 { // 譯註:因為 DstT 不出現在引數列,無法進行引數推導。 return x; } int main() { double value = implicit_cast<double>(-1); } 如果...
View Full Document

Ask a homework question - tutors are online