C 11 make_pair 使用明確模板參數失敗
問題:
問題:std::pair<std::string, int>& b = std::make_pair<std::string, int>(s, 7);
儘管存在 make_pair 函數,但編譯器會出錯。
解釋:error: no matching function for call to ‘make_pair(std::string&, int)’
當未明確提供模板參數時,會發生模板參數推導。這允許右值引用模板參數在作為函數參數出現時綁定到左值。在沒有模板參數的 std::make_pair 的情況下,編譯器將 T 推斷為 std::string& 並將 U 推斷為 int 並成功將 s 和 7 綁定到函數參數。
解:std::make_pair 的建議用法是省略模板參數,依靠模板參數推導。透過遵循這個規則,編譯器將正確處理參數匹配並避免編譯錯誤。以上是為什麼 C 11 中的明確模板參數 `std::make_pair` 會失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!