Ignore gcc's inaccurate strict aliasing warnings

This commit is contained in:
rexy712 2020-04-04 22:23:50 -07:00
parent 4d0b5fd125
commit e37ead5e9b

View File

@ -27,6 +27,8 @@
#include <rexy/detail/util.hpp> //max
#include <rexy/detail/default_allocator.hpp>
#define STOP_STRICT_ALIAS_WARNING(x) (x)
namespace rexy{
class binary_base
@ -91,7 +93,7 @@ namespace rexy{
Allocator::free(m_data);
}
binary_data& operator=(const binary_data& b){
binary_data tmp(b);
binary_data<allocator_type> tmp(b);
return (*this = std::move(tmp));
}
binary_data& operator=(binary_data&& b){
@ -114,12 +116,12 @@ namespace rexy{
bool resize(size_t newsize){
if(newsize < m_cap)
return false;
binary_data tmp(newsize);
binary_data<allocator_type> tmp(newsize);
if(!tmp)
return false;
memcpy(tmp.m_data, m_data, m_size);
std::swap(m_data, tmp.m_data);
m_cap = tmp.m_cap;
memcpy(STOP_STRICT_ALIAS_WARNING(tmp).m_data, m_data, m_size);
std::swap(m_data, STOP_STRICT_ALIAS_WARNING(tmp).m_data);
m_cap = STOP_STRICT_ALIAS_WARING(tmp).m_cap;
return true;
}
void append(const char* data, size_t len){