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

履歴 編集

function
<filesystem>

std::filesystem::directory_iterator::operator=(C++17)

directory_iterator& operator=(const directory_iterator& rhs);     // (1)
directory_iterator& operator=(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::directory_iterator it1{"dir"};
  fs::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

処理系