class FileGuard { public: explicit FileGuard(const char* path) : f_(std::fopen(path, "r")) {} ~FileGuard() { if (f_) std::fclose(f_); } FileGuard(const FileGuard&) = delete; FileGuard& operator=(const FileGuard&) = delete; std::FILE* get() const { return f_; } private: std::FILE* f_; };