1
0
Fork 0
forked from suyu/suyu

file_util: Make move constructor/assignment operator and related functions noexcept

Without this, it's possible to get compilation failures in the (rare) scenario where
a container is used to store a bunch of live IOFile instances, as they may be using
std::move_if_noexcept under the hood. Given these definitely don't throw exceptions
this is also not incorrect to add either.
This commit is contained in:
Lioncash 2018-04-29 18:29:03 -04:00
parent 40d2dcabd7
commit e8bbafb746
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7
2 changed files with 6 additions and 6 deletions

View file

@ -809,16 +809,16 @@ IOFile::~IOFile() {
Close(); Close();
} }
IOFile::IOFile(IOFile&& other) { IOFile::IOFile(IOFile&& other) noexcept {
Swap(other); Swap(other);
} }
IOFile& IOFile::operator=(IOFile&& other) { IOFile& IOFile::operator=(IOFile&& other) noexcept {
Swap(other); Swap(other);
return *this; return *this;
} }
void IOFile::Swap(IOFile& other) { void IOFile::Swap(IOFile& other) noexcept {
std::swap(m_file, other.m_file); std::swap(m_file, other.m_file);
std::swap(m_good, other.m_good); std::swap(m_good, other.m_good);
} }

View file

@ -160,10 +160,10 @@ public:
~IOFile(); ~IOFile();
IOFile(IOFile&& other); IOFile(IOFile&& other) noexcept;
IOFile& operator=(IOFile&& other); IOFile& operator=(IOFile&& other) noexcept;
void Swap(IOFile& other); void Swap(IOFile& other) noexcept;
bool Open(const std::string& filename, const char openmode[]); bool Open(const std::string& filename, const char openmode[]);
bool Close(); bool Close();