どうすれば記入できますか???
template<class...Itrs> struct itr_category { typedef /* ??? */ type; };
だから、それはすべての'操作をサポートするtype
最も専門的なものです、そうでなければ、そのようなカテゴリが1つもない場合の失敗(のような)?iterator_traits<Itrs>::iterator_category...
Itrs
enable_if<false>::type
最も特殊iterator_category
化されているとは、次の継承で最も降順の型()を意味します。
struct input_iterator_tag { };
struct output_iterator_tag { };
struct forward_iterator_tag : public input_iterator_tag,
public output_iterator_tag { };
struct bidirectional_iterator_tag : public forward_iterator_tag { };
struct random_access_iterator_tag : public bidirectional_iterator_tag { };
したがって、たとえば、のようなものitr_category<InputIterator,OutputIterator,...>
は失敗します。
注意:これはで定義されているものとは異なる階層ですstd::iterator_traits
(24.3またはhttp://en.cppreference.com/w/cpp/iterator/iterator_tagsを参照):ここでは、前者だけでなく、とのforward_iterator_tag
両方から派生しています。これは、たとえばSGIドキュメント( http://www.sgi.com/tech/stl/Iterators.htmlを参照)で説明されている継承に対応します。関連する場合は、この不一致についてコメントしてください(ちなみに、これはzipイテレータの実装の一部です)。input_iterator_tag
output_iterator_tag