VC++2015にて

std::map<std::wstring, std::wstring> testmap;
testmap[L"Hello"] = L"World";
const std::map<std::wstring, std::wstring>& testmap2 = testmap;
std::wstring val = testmap2[L"Hello"];

この4行目でC2678
二項演算子 '[': 型 'const std::map<std::wstring,std::wstring,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' の
左オペランドを扱う演算子が見つかりません (または変換できません)

が発生するんだけど、要は「鍵と要素がwstring」で「constな」mapを上記のようにリテラル文字列で[]参照する書き方ってできる・・・?
const std::wstring ws = L"Hello";
std::wstring val = testmap2[ws];
とかやってもだめだった

エラーの詳細としては、mapのoperator[]に「wstring&」と「wstring&&」の両方があって曖昧だからNGらしい
そもそもconstなmapなのに要素変更にも使える[]を呼んでいるのがダメってことかいね?const外せば動くし