要領は分かったと思います。FdmLinearOpLayoutクラスは、協働してこのロジックをサポートしています。Arrays(配列)の操作を行っています。(訳注:ここでは座標を意味し、std::tupleの意味では無い。それらを一本にまとめた配列のインデックスとの関係を管理します。その為には、各次元の配列のサイズ(上記例ではM、N、Pが該当)を保持する必要があります。呼び出すコンストラクターによって、そういった情報のすべてを、あるいは一部を明示的に引数として渡す事ができます。Iteratorを返します。(訳注:配列の終わりを示す値)を生成しますが、その値はインクリメントできません。この段階では配列のサイズが判っていないからです。Listingは、そういった使用例です)。Iteratorを生成する事ができます。計算パフォーマンスの理由からと思われますが、パラメータが整合的かどうかのチェックは、この情報を呼び出す側に任されています。チェックとは、各次元のインデックスの集合(座標)が一本に並べられた配列のインデックスと対応しているかどうか確認する事です。iteratorと厳密には同じではありません。iteratorに要求されるインターフェースをすべて備えていないからです。dereference演算子がありません。)は、2つのIteratorを比較します。いうチェック文で使えれば十分だからです。省略し過ぎかもしれません。)メソッドは座標に対応する一本に並べた配列上のインデックスを返します。再設定し次の次元のインデックスのインクリメント操作に移ります。なければ、ループから出ます。