I have come across structs that are defined seemingly with function calls inside, in some actual c++ code, that I need help to interpret. For example, in Resource.h from the AOSP, there is the following struct definition
/**
 * A binary identifier representing a resource. Internally it
 * is a 32bit integer split as follows:
 *
 * 0xPPTTEEEE
 *
 * PP: 8 bit package identifier. 0x01 is reserved for system
 *     and 0x7f is reserved for the running app.
 * TT: 8 bit type identifier. 0x00 is invalid.
 * EEEE: 16 bit entry identifier.
 */
struct ResourceId {
  uint32_t id;
  ResourceId();
  ResourceId(const ResourceId& rhs);
  ResourceId(uint32_t res_id);  // NOLINT(google-explicit-constructor)
  ResourceId(uint8_t p, uint8_t t, uint16_t e);
  // Returns true if the ID is a valid ID that is not dynamic (package ID cannot be 0)
  bool is_valid_static() const;
  // Returns true if the ID is a valid ID or dynamic ID (package ID can be 0).
  bool is_valid() const;
  uint8_t package_id() const;
  uint8_t type_id() const;
  uint16_t entry_id() const;
  std::string to_string() const;
};
I don't understand this part:
  ResourceId();
  ResourceId(const ResourceId& rhs);
  ResourceId(uint32_t res_id);  // NOLINT(google-explicit-constructor)
  ResourceId(uint8_t p, uint8_t t, uint16_t e);
Are these function calls? How can they be part of a struct definition? I found this SO post but am not sure if it is relevant/related.
 
    