我試圖使用auto&語法來獲得對放置的專案的參考,但是編譯失敗,出現了上述錯誤。
在這種情況下,我怎樣才能獲得對放置的專案的參考呢?
我試圖使用const auto&,但該物件似乎在我的實際應用中呼叫了析構器,因此它似乎充其量是一個假的參考。
#include <string>
#include <unordered_map>/span>
class Connection {
public:
bool foo{};
};
int main() {
std::unordered_map<std::string, Connection> connections;
auto& [connection, inserted] = connections.try_emplace("test")。
}
uj5u.com熱心網友回復:
這是因為try_emplace回傳一個pair<iterator, bool>,它是一個臨時的,而不是一個對插入元素的參考。參見關于cppreference的描述
放置之后,你可以說
auto& elem = connections["test"] 。
或者
auto [connection, inserted] = connections.try_emplace("test")。
auto& elem = *connection;
例如,獲得一個元素的參考。
const auto&可以編譯,因為宣告一個const臨時的參考是合法的,但是宣告一個非constlvalue的參考則不合法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/306728.html
標籤:
上一篇:<p>基本上,我想實作的是:</p><p>用戶將看到第一個輸入,并能夠輸入他們的數字,這些數字將被自動轉換成貨幣價值。 <p>用戶將看到第一個輸入欄位,
