Boost logo

Boost Users :

Subject: Re: [Boost-users] [intrusive_ptr] Strange ternary op behavior with MSVC14
From: Stephan Bergmann (sbergman_at_[hidden])
Date: 2015-08-11 05:39:59


On 08/11/2015 10:27 AM, TONGARI J wrote:
> template<class T>
> struct wrapper
> {
> wrapper() = default;
>
> wrapper(boost::intrusive_ptr<T> const& p) : _p(p) {}
>
> boost::intrusive_ptr<T> const& get_ptr() const
> {
> #if 0
> // This is OK.
> if (_p)
> return _p;
> return nullptr;
> #else
> // Strange behavior.
> return _p ? _p : nullptr;
> #endif
> }

In both cases, you return a reference to a temporary, incurring
undefined behavior.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net