27 Input/output library [input.output]

27.10 File systems [filesystems]

27.10.12 Class directory_entry [class.directory_entry]

namespace std::filesystem {
  class directory_entry {
  public:
    // [directory_entry.cons], constructors and destructor
    explicit directory_entry(const path& p);
    directory_entry() noexcept = default;
    directory_entry(const directory_entry&) = default;
    directory_entry(directory_entry&&) noexcept = default;
   ~directory_entry();

    // assignments:
    directory_entry& operator=(const directory_entry&) = default;
    directory_entry& operator=(directory_entry&&) noexcept = default;

    // [directory_entry.mods], modifiers
    void assign(const path& p);
    void replace_filename(const path& p);

    // [directory_entry.obs], observers
    const path&  path() const noexcept;
    operator const path&() const noexcept;
    file_status  status() const;
    file_status  status(error_code& ec) const noexcept;
    file_status  symlink_status() const;
    file_status  symlink_status(error_code& ec) const noexcept;

    bool operator< (const directory_entry& rhs) const noexcept;
    bool operator==(const directory_entry& rhs) const noexcept;
    bool operator!=(const directory_entry& rhs) const noexcept;
    bool operator<=(const directory_entry& rhs) const noexcept;
    bool operator> (const directory_entry& rhs) const noexcept;
    bool operator>=(const directory_entry& rhs) const noexcept;

  private:
    path   pathobject; // exposition only
  };
}

A directory_entry object stores a path object.

27.10.12.1 directory_entry constructors [directory_entry.cons]

explicit directory_entry(const path& p);

Effects: Constructs an object of type directory_entry.

Postconditions: path() == p.

27.10.12.2 directory_entry modifiers [directory_entry.mods]

void assign(const path& p);

Postconditions: path() == p.

void replace_filename(const path& p);

Postconditions: path() == x.parent_path() / p where x is the value of path() before the function is called.

27.10.12.3 directory_entry observers [directory_entry.obs]

const path& path() const noexcept; operator const path&() const noexcept;

Returns: pathobject.

file_status status() const; file_status status(error_code& ec) const noexcept;

Returns: status(path()) or status(path(), ec), respectively.

Throws: As specified in [fs.err.report].

file_status symlink_status() const; file_status symlink_status(error_code& ec) const noexcept;

Returns: symlink_status(path()) or symlink_status(path(), ec), respectively.

Throws: As specified in [fs.err.report].

bool operator==(const directory_entry& rhs) const noexcept;

Returns: pathobject == rhs.pathobject.

bool operator!=(const directory_entry& rhs) const noexcept;

Returns: pathobject != rhs.pathobject.

bool operator< (const directory_entry& rhs) const noexcept;

Returns: pathobject < rhs.pathobject.

bool operator<=(const directory_entry& rhs) const noexcept;

Returns: pathobject <= rhs.pathobject.

bool operator> (const directory_entry& rhs) const noexcept;

Returns: pathobject > rhs.pathobject.

bool operator>=(const directory_entry& rhs) const noexcept;

Returns: pathobject >= rhs.pathobject.