2011-02-24 11 views

答えて

4

私はこのようなメタ機能を認識していません。

すべてのイテレータに対応するconst_iteratorがあるわけではありません。例えば。 insert_iterator。そのようなメタファンクションは、そのような場合に何が起こるかを決める必要があります。

0

私はreverse_iteratorの何かを考えることができます:baseメンバー関数decltypeを使用して、戻り値の型を抽出してiteratorに戻ることができます。

しかし、iterator/const_iteratorにはそのような機能がありません。内部typedefを提供するか、明示的に特殊化する必要があるかどうかは分かりません。

0

私はあなたの問題への一般的な解決策を考える(ともポータブルだろう一つはできません)。少なくとも私は想像することはできません:-)。

ここでの困難な問題は、コンテナがconst_iteratorのタイプを定義することです。コンテナのconst_iterator型に到達するには、コンテナの型を決定する必要があります。あなたはメタ関数のパラメータとしてコンテナのイテレータ型で開始した場合

は、しかし、容器の種類を取得することはできません。あなたが欲しいものを、既知のT(S)のために

は...しかし

0

を達成することができイテレータ型の間には明確に定義されたマッピングがしばしばありますので、私はこれが可能だとは思いません。例えば、2つのコンテナは、非constイテレータ型を共有することができるが、異なるイテレータを有する。一般的には、コンテナ型からイテレータ型にしかマッピングできませんが、イテレータ型とイテレータ型からコンテナ型にはマッピングできません。

関連する問題