[讀書筆記]Universal References in C++11 part 6: 儘量避免overloading
本篇主要參考effective modern C++ : Item 17: Understand special member function generation. Item 26: Avoid overloading on universal references. Item 27: Familiarize yourself with alternatives to overloading on universal references. 本文開始 在理解完Universal Reference(UR)的強大之處後,應該有很多人躍躍欲試的想把這個概念導入到自己撰寫的程式碼裡面吧?不過這東西也不是沒有它的限制。由於template編譯期動態產生程式碼的特性,因此編譯器會針對傳入的參數,非常積極的去產生對應的程式碼。 雖然上一篇我們談到了該怎麼樣用Type Trait在編譯期防止使用者傳入非預期的參數型態,但那其實只是一種防呆機制,實際上的問題在於別處:若是我們試圖去overload 該function的話,那麼將會有高達八成的使用情境程式會呼叫到UR版本。為什麼會這樣呢?讓我們先來看看以下這個正常運作的例子: class Resource{ public: … Continued