30 Input/output library [input.output]

30.10 File systems [filesystems]

30.10.31 Class directory_­entry [fs.class.directory_entry]

30.10.31.2 directory_­entry modifiers [fs.dir.entry.mods]

void assign(const path& p); void assign(const path& p, error_code& ec);

Effects: Equivalent to pathobject = p, then refresh() or refresh(ec), respectively. If an error occurs, the values of any cached attributes are unspecified.

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

void replace_filename(const path& p); void replace_filename(const path& p, error_code& ec);

Effects: Equivalent to pathobject.replace_­filename(p), then refresh() or refresh(ec), respectively. If an error occurs, the values of any cached attributes are unspecified.

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

void refresh(); void refresh(error_code& ec) noexcept;

Effects: Stores the current values of any cached attributes of the file p resolves to. If an error occurs, an error is reported ([fs.err.report]) and the values of any cached attributes are unspecified.

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

[Note: Implementations of directory_­iterator ([fs.class.directory_iterator]) are prohibited from directly or indirectly calling the refresh function since it must access the external file system, and the objective of caching is to avoid unnecessary file system accesses. end note]