const_iteratorの勘違い
ポインタ型を要素に持つコンテナの挙動を勘違いしていた。
std::list< int* > lsValue; std::list< int* >::const_iterator itr = lsValue.begin(); for ( ; itr != lsValue.end(); ++itr ) { *(*itr) = 1; // std::list< const int* > ではないので代入可能 }
実体の場合
std::list< int > lsValue; std::list< int >::const_iterator itr = lsValue.begin(); for ( ; itr != lsValue.end(); ++itr ) { (*itr) = 1; // 代入不可というか左辺値はconstだがねとビルドエラーになる }
constメンバ関数ではないI/Fが呼び出せてしまったので、何故?とちょっと悩んでしまった。