Boost logo

Boost Users :

Subject: Re: [Boost-users] [intrusive_ptr] Strange ternary op behavior with MSVC14
From: TONGARI J (tongari95_at_[hidden])
Date: 2015-08-11 09:31:56


2015-08-11 17:39 GMT+08:00 Stephan Bergmann <sbergman_at_[hidden]>:

> 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.
>

Ah damn! You're right, how could I overlook the const& part!?
Sorry for the noise.



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