int main() { using namespace fs; // Default ctor { static_assert(std::is_nothrow_default_constructible<file_status>::value, "The default constructor must be noexcept"); static_assert(test_convertible<file_status>(), "The default constructor must not be explicit"); const file_status f; assert(f.type() == file_type::none); assert(f.permissions() == perms::unknown); } // Unary ctor { static_assert(std::is_nothrow_constructible<file_status, file_type>::value, "This constructor must be noexcept"); static_assert(!test_convertible<file_status, file_type>(), "This constructor must be explicit"); const file_status f(file_type::not_found); assert(f.type() == file_type::not_found); assert(f.permissions() == perms::unknown); } // Binary ctor { static_assert(std::is_nothrow_constructible<file_status, file_type, perms>::value, "This constructor must be noexcept"); static_assert(!test_convertible<file_status, file_type, perms>(), "This constructor must b explicit"); const file_status f(file_type::regular, perms::owner_read); assert(f.type() == file_type::regular); assert(f.permissions() == perms::owner_read); } }
Status::Status(const file_status &Status) : UID(Status.getUniqueID()), MTime(Status.getLastModificationTime()), User(Status.getUser()), Group(Status.getGroup()), Size(Status.getSize()), Type(Status.type()), Perms(Status.permissions()) {}
inline bool permissions_present(file_status f) {return f.permissions() != perms_not_known;}
bool operator==(const file_status& rhs) const { return type() == rhs.type() && permissions() == rhs.permissions(); }