home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.c++.moderated      Moderated discussion of C++ superhackery      33,346 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 33,170 of 33,346   
   SG to All   
   Re: Does std::unique_ptr support self-re   
   12 Aug 13 17:16:38   
   
   From: sgesemann@googlemail.invalid   
      
   Am 12.08.2013 19:48, schrieb Greg Marr:   
   > On Monday, August 12, 2013 10:23:38 AM UTC-4, SG wrote:   
   >> Actually, this looks good to me. It does not support self-reset but it   
   >> does not have to according to the standard. What do you think is   
   >> non-conforming about it?   
   >   
   > It does support self-reset, exactly as does the MSVC implementation   
   > that Daniel Krugler said is non-conforming, because it doesn't   
   > call get_deleter()(old_value) if the old value and the new value   
   > are the same.   
      
   Not true. See below.   
      
   > This is different than the reset() later in the same file, which is   
   >   
   >        void   
   >        reset(pointer __p = pointer()) noexcept   
   >        {   
   >          using std::swap;   
   >          swap(std::get<0>(_M_t), __p);   
   >          if (__p != nullptr)   
   >            get_deleter()(__p);   
   >        }   
   >   
   > The difference is   
   >          if (__p != nullptr)   
   > vs   
   >          if (__p != pointer())   
      
   I think you got confused with the meaning of pointer(). pointer() is not   
   a function like get() that returns the current address. pointer()   
   creates a null pointer value because pointer is a typedef for the   
   pointer type (a typedef from the deleter class IIRC) much like int() is   
   equal to zero. So,   
      
     if (__p != pointer())   
      
   checks whether p differs from a null pointer and not whether __p differs   
   from the value returned by get().   
      
      
   --   
         [ See http://www.gotw.ca/resources/clcm.htm for info about ]   
         [ comp.lang.c++.moderated.    First time posters: Do this! ]   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca