提供的程式碼片段定義了一個帶有運算子std::string( ) 重載和Person 的NameType 結構包含名為name 的NameType 實例的結構體。當嘗試使用 std::cout
出現此問題的原因是 C 98 規則禁止當函數參數之一包含模板參數推導中涉及的模板參數時進行隱式轉換。在這種情況下,所需的重載是帶有模板參數 charT、traits 和 Allocator 的模板實例化。由於所有參數都包含參數推導涉及的模板參數,因此不允許隱式轉換,導致重載解析失敗。
為了解決此問題,需要明確重載聲明operator
<code class="cpp">std::ostream& operator<<(std::ostream& os, const Person& p);</code>
透過提供明確重載,編譯器可以解析重載並成功串流 Person 物件。
以上是為什麼透過隱式轉換為字串串流物件時重載解析失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!