https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83345
--- Comment #2 from Pawel Sikora <pawel_sikora at zoho dot com> --- (In reply to Jonathan Wakely from comment #1) > I think that's the expected behaviour in C++17. The return statement in the > conversion operator no longer constructs an object in C++17, it calls the > conversion operator again. > > This will fix it: > > operator ref_proxy_t( void ) > { > return ref_proxy_t( static_cast<ICondition&>(*this) ); > } thanks for clarification. is there any list of such breaking changes for c++17?