Question \#13 Consider a simple class for wrapping a file descriptor. What are the minimal change(s) that would be required to make the class: 1. hard to accidentally misuse (e.g. causing an invalid or undesired file descriptor to be closed), and 2. usable as a return value from a function? 1. Adding a custom move constructor and move assignment operator. Filedescriptor(filenescriptorss chs) noexcept : fd_(rhs.fd_) f rhs.fd_ =1; i Filedescriptors operator-(FiloDescriptorss chs) noexcept f using std: :swap; swap(fd, rhs. Fd_); return wthis; 2. Adding a custom copy constructor and copy assignment operator: Filedescriptor(Filedescrintor consts rhs) : fd_(rhs.fo_) [) Filedescriptors operator- (FileDoscriptor consts rhs) t fd_- rhs.fd-; feturn *this; J 3. Disabling the copy constructor and copy assignment operator: F11eDescriptor(FileDescriptor consts) - delete; Filedescriptars operator-(Filedescriptor consts) - delete; 4. Disabling the move constructor and move assignment operator: F11cDescriptor(FiloDescriptorss)=de1ete;F11eDescriptorsoperator-(F11edescriptors8)=delete; 5. Adding default implementations of the move constructor and move assignment operator: Filedescriptor(Filedescrtptarss) - defau1t; FlieDescriptors operator-(FileDescriptonss) - default;.