constメンバ関数内でのmapについて

例えば

#include <iostream>
#include <map>

using namespace std;

class CClass{
public:
int Getmap(int i)const;
private:
  map<int,int> m_mapTest;
};
int CClass::GetMap(int i)const{
  return m_mapTest[i];
}

をすると return m_mapTest[i];の行でC2678のエラーが出る。
オペランドが定義されていない、とでる。mapのヘッダファイルを見てみるとoperator[]は

reference operator[](cons key_type &K);

しか定義されていない!
途方にくれていたところふとfind()という関数が

iterator find(const key_type &k);
const_iterator find(const key_type &k)const;

と定義されているじゃないですか!!!
というわけで

int CClass:GetMap(int i)const{
  return m_mapTest.find(i)->second;
}

としてやると無事コンパイルが通った!
裏技みたいだけどまあいいのかな?かな?
とりあえずなんで

const reference operator[](const key_type &k)const;

が定義されていないのか半ば疑問。const referenceみたいな書き方がC++は定義されていないのかしら?ご存じのかたは教えていただけると勉強になります。