• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <filesystem>

    std::filesystem::recursive_directory_iterator::operator=

    recursive_directory_iterator& operator=(const recursive_directory_iterator& rhs);     // (1)
    recursive_directory_iterator& operator=(recursive_directory_iterator&& rhs) noexcept; // (2)
    

    概要

    • (1) : コピー代入演算子
    • (2) : ムーブ代入演算子

    効果

    rhs*thisが同じオブジェクトである場合はなにもしない

    • (1) : rhsが保持するデータを*thisにコピーする
    • (2) : rhsが保持するデータを*thisにムーブする

    戻り値

    *this

    事後条件

    備考

    未規定だが、GCC 8.2およびClang 7.0環境では、この代入演算子はコピー元とコピー先で所有権を共有する。そのため、コピー・ムーブに関わらず、代入元のイテレータは代入後に再構築以外の操作をしてはならない

    #include <iostream>
    #include <filesystem>
    #include <fstream>
    
    namespace fs = std::filesystem;
    
    int main()
    {
      fs::create_directory("dir");
      std::ofstream{"dir/a.txt"};
      std::ofstream{"dir/b.txt"};
    
      fs::recursive_directory_iterator it1{"dir"};
      fs::recursive_directory_iterator it2;
    
      it2 = it1;
    
      std::cout << it2->path() << std::endl;
      ++it2;
      std::cout << it2->path() << std::endl;
    }
    

    出力例

    "dir/b.txt"
    "dir/a.txt"
    

    バージョン

    言語

    • C++17

    処理系