是否可以使用QMap< QString, boost::multi_index_container<...> >
這樣的結構?boost :: multi_index_container在QMap中
一方面,我們在容器聲明中有private: BOOST_COPYABLE_AND_MOVABLE(multi_index_container)
。它應該告訴我們不要將multi_index_container <>放入其他類似stl的容器中。
在另一方面,這種結構
QMap< QString, boost::multi_index_container<...> > _map;
map.insert("bla-bla", container1);
...
auto tmp = _map.value(QString("bla-bla")).get<keyVal>();
//keyVal corresponds to one for the multi_index_container instance
與Visual Studio 2012(+ UPDATE4 +升壓v1.55 + QT v4.8.5)編譯好。
實驗人們發現:
auto tmp = _map.value(QString("bla-bla")).get<keyVal>();
使得tmp
處理刪除的數據。 而
auto tmp = _map.value(QString("bla-bla"));
auto tmp_1 = tmp.get<keyVal>();
葉tmp_1
有效數據。
有沒有人知道如果我們需要把它放在另一個容器中,boost::multi_index_container<>
的適當處理是什麼?
Qt5.3有什麼不同嗎?
_「通過實驗發現」_編譯器會很高興地編譯你的[Undefined Behavior]()。絕大多數此類情況下,它們不需要發出診斷消息。 – sehe 2014-10-07 17:25:43