Browse Source

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.
nce_cpp
Lioncash 8 years ago
parent
commit
22b7e4fcf6
  1. 6
      src/common/file_util.cpp
  2. 6
      src/common/file_util.h

6
src/common/file_util.cpp

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

6
src/common/file_util.h

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

Loading…
Cancel
Save