私が書いたコンテナのクラスに対して定数または不定数反復を許可したいと思います。私のコンテナはstd::vector
の要素を非const
の参照(elements
と呼んでいる)に格納しています。私は、例えば、これを行うためにブーストのtransform iteratorを使用しています:C++でTからconst Tに変換する関数
auto begin() const
{
return boost::make_transform_iterator
(elements.begin()
, to_const<std::reference_wrapper<ElementType>>
);
}
私はconst T
にタイプT
のオブジェクトを変換するために書いた簡単な関数テンプレートを使用しています:
template <typename T>
std::add_const<T>::type to_const(T value) { return value; }
私はそれを知っています私はちょうどstd::add_const
に似ていますが、実際の機能としてこれを行うためのSTLまたはBoost関数テンプレートがあるかどうかを知りたいと思っていました。 (あるいは、誰かが遅延ベクトルを遅れて定数ベクトルに遅延変換するより良い方法を知っていれば、さらに良いでしょう。)
パーフェクト。私がconstexprや参照パラメータのようなものを忘れると、なぜ標準実装を探したかったのですか? :P –
完全性のために、仮引数が 'const'の場合は、引数として引数を渡すことができると言わなければなりません。 –
@ JohannesSchaub-litb、これはForwarding Referenceではないので、明示的なテンプレート引数が[std :: as_const(A()) '**または... **' std :: as_const(static_cast (A())); '](http://coliru.stacked-crooked.com/a/77d58c9af7e711af)...しかし、なぜ誰かがそれをやりたがっていますか? –
WhiZTiM