4

ブースト directory_iterator の例では、再帰的ではないディレクトリ ファイルを一覧表示する方法(この回答を参照) がサンプル コードです。

#include <boost/filesystem.hpp>
#include <boost/range/iterator_range.hpp>
#include <iostream>

...
using namespace boost::filesystem;

for(auto& entry : boost::make_iterator_range(directory_iterator(p), {}))
{
    std::cout << entry << "\n";
}

(pはタイプboost::filesystem::pathです。)

のドキュメントmake_iterator_rangeを見ると、呼び出されているコンストラクターは次のとおりだと思います。

template< class ForwardTraversalIterator >
    iterator_range< ForwardTraversalIterator >
    make_iterator_range( ForwardTraversalIterator Begin,
                         ForwardTraversalIterator End );

私が正しければ、上記のコード例で渡された 2 番目の引数 は{}directory_iterator.

これは今まで見たことがありません。

end空のイニシャライザリストからそのようなイテレータを値構築するだけで、イテレータを構築することは可能{}ですか? (私はこれを適切に表現していますか?)

そのように構築されたイテレータの型が最初のイテレータ ( ) の型と一致しなければならないことを考えると、内部で何が起こっているかを誰かに詳しく説明してもらってもかまいませんdirectory_iterator(p)。(ここでテンプレートの引数の推定が行われていますか?)

4

2 に答える 2