fix CirculatorT type-pun warning on GCC6

(fixes #28)
This commit is contained in:
Janis Born
2016-08-11 10:22:44 +02:00
parent cb5bc2b2b4
commit 5ee25a5af0

View File

@@ -314,13 +314,15 @@ class GenericCirculatorT : protected GenericCirculatorBaseT<Mesh> {
/// Standard dereferencing operator. /// Standard dereferencing operator.
value_type operator*() const { value_type operator*() const {
// We can't use this due to a GCC6 compiler bug
const GenericCirculatorBaseT<Mesh>* self = this;
#ifndef NDEBUG #ifndef NDEBUG
assert(this->heh_.is_valid()); assert(this->heh_.is_valid());
value_type res = (this->*Handle2Value)(); value_type res = (self->*Handle2Value)();
assert(res.is_valid()); assert(res.is_valid());
return res; return res;
#else #else
return (this->*Handle2Value)(); return (self->*Handle2Value)();
#endif #endif
} }
@@ -498,13 +500,15 @@ class GenericCirculatorT_DEPRECATED : protected GenericCirculatorBaseT<Mesh> {
/// Standard dereferencing operator. /// Standard dereferencing operator.
value_type operator*() const { value_type operator*() const {
// We can't use this due to a GCC6 compiler bug
const GenericCirculatorBaseT<Mesh>* self = this;
#ifndef NDEBUG #ifndef NDEBUG
assert(this->heh_.is_valid()); assert(this->heh_.is_valid());
value_type res = (this->*Handle2Value)(); value_type res = (self->*Handle2Value)();
assert(res.is_valid()); assert(res.is_valid());
return res; return res;
#else #else
return (this->*Handle2Value)(); return (self->*Handle2Value)();
#endif #endif
} }