diff --git a/src/net/socketaddress.hpp b/src/net/socketaddress.hpp index 7a32f2883dda101db28bc82939ac1e5bee7e159f..ccb0c76c896b0d20640a51773ab3e717c37c08bc 100644 --- a/src/net/socketaddress.hpp +++ b/src/net/socketaddress.hpp @@ -10,6 +10,7 @@ #include <functional> +#include "macros.hpp" #include "net/netio_exception.hpp" #ifdef __linux__ @@ -80,17 +81,24 @@ public: } template <typename T> - socketaddr &operator=(T *rhs) { + socketaddr& operator=(const T *rhs) { if (rhs->*(family_map<T>::sa_family_field) != family_map<T>::sa_family) { throw netio_exception("Address family mismatch in sockaddr structure."); } memcpy(&addr, rhs, sizeof(T)); len = sizeof(T); + +COMPILER_SUPRESS("-Weffc++"); + return *this; +COMPILER_RESTORE("-Weffc++"); } - socketaddr &operator=(sockaddr_storage *rhs) { - return *this = (sockaddr*)rhs; + socketaddr& operator=(const sockaddr_storage *rhs) { + *this = (sockaddr*)rhs; +COMPILER_SUPRESS("-Weffc++"); + return *this; +COMPILER_RESTORE("-Weffc++"); } socketaddr& operator=(sockaddr *rhs) {