一般STL容器不能容納非CopyAssignable
類型,如引用。如果我以不復制副本的方式構建容器,那麼代碼是否有效。它編譯與std=c++11
和c++14
與某些版本的gcc-7.2,但以下有效,或我可以指望它與圖書館升級打破?在這種情況下,我應該使用reference_wrapper
嗎?構建一個保持引用的unordered_map是否合法?
#include <unordered_map>
struct S {};
void use (S&) {}
void test() {
S s1, s2;
const std::unordered_map<int, S&> m{{0, s1}, {1, s2}};
use(m.at(0));
}
編輯我真的需要標準的參考。如果符合標準的編譯器/標準庫更新可能會破壞代碼,對我來說也是不夠的。所以給我"unordered_map with reference as value"給出的答案對我來說還不夠。
可能重複的[無序的\ _map作爲參考值](https://stackoverflow.com/questions/24719044/unordered-map-with-reference-as-value) – davidhigh
在一般容器中需要CopyAssignable不僅用於構造,但也有許多算法可能無法按預期工作 – user463035818