配列の演算子の多重定義
なんだか融通がきかない(^^; C++で一番弱い部分じゃないかなと思われる多次元配列。当然それに伴う演算子もやっぱりなんだか使いにくい。
多次元配列みたいに[ ]を並べるような文法に多重定義しようと思ったら[ ]が一つの関数としてしか扱えないのでそれで帰ってきた参照をさらに関数を呼ぶみたいなことになる。これはパフォーマンス的にどうかなと考えてしまう。
こういう文法があれば便利なんだけどなぁ。
template< class T > class Array2D { public: T& operator( unsigned int index1, unsigned int index2 ); ・・・・ };
残念ながらこんな文法はありません。何でかなとも思うが、なんとなく理由がわかる気はします。コンパイルの段階では[ ]と[ ][ ]の見分けがつかない。片方だけ定義されていれば問題はないが両方使われている場合は関数オーバーロードが解決できない。・・・とはいえそれだけの話なんだけどね(^^;
あとはキリがないという理由か?[ ][ ]という関数も(言語レベルで)定義したなら[ ][ ][ ]というのもまた必要に、さらに[ ][ ][ ][ ]も・・・となってしまう。これを一般化できるのか?といわれたら私はコンパイル理論をよく知らないのでなんともいえません(ぉぃ
まあ、言語を使う側にしてみればこういう文法があったらいいなぁという話でした。