練習16.37
标準庫max函數有兩個參數,它傳回實參中的較大者。此函數有一個模闆類型參數。你能再調用max時傳遞給它一個int和一個double嗎?如果可以,如何做?如果不可以,為什麼?
解答:
default (1) | |
---|---|
custom (2) | |
initializer list (3) | |
以上是max的三個聲明。
當傳遞給它一個int和一個double的,T會無法确定類型,是以肯定會在編譯的時候出現錯誤。
練習16.38
當我們調用make_shared(參見12.1.1節,第401行)時,必須提供一個顯示模闆實參。解釋為什麼需要顯示模闆實參以及它是如何使用的。
解答:
這個其實就是定義的問題,603頁和604頁,或者說這節都在回答這個問題。
練習16.39
對16.1.1節(第578頁)中的原始版本的compare函數,使用一個顯示模闆實參,使得可以向函數傳遞兩個字元傳字面常量。
解答:
compare<std::string>("hello", "world")