improve gcc compatability, add noexcept to destructors