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 32,322 of 33,346   
   Wil Evers to Seungbeom Kim   
   Re: Broken interaction between std::prio   
   21 May 12 14:24:18   
   
   From: bouncer@dev.null   
      
   Seungbeom Kim wrote:   
      
   > On 2012-05-20 21:19, Zoltan Juhasz wrote:   
   [snip]   
   >> for example:   
   >>   
   >> value_type faulty_pop()   
   >> {   
   >>   auto e = move_if_noexcept( internal_top() );   
   >>   internal_pop();   
   >>   return e;   
   >> }   
   >>   
   >> does not provide strong exception guarantees, b/c when you return   
   >> 'e', an exception might occur, and at that point you've changed the   
   >> container in an irreversible way.   
   >   
   > Can't we enable that function only for value_types with a   
   > non-throwing move constructor?   
   >   
   >> The pop( value_type& e ), on the other hand, does not suffer from   
   >> these kind of problems;   
   >   
   > But then you need to default construct an object of value_type and   
   > ask the top element to be move-assigned to it. It may not be always   
   > possible or desirable to default construct such an object, just to   
   > be overwritten later.   
      
   I agree.  Paradoxically, a movable type without a default constructor   
   seems like a strange beast, because it presumably implements a "valid,   
   but resourceless" state for its objects to be left in after having   
   been moved from.   
      
   I would say that a type with a default constructor clearly advertises   
   that such a state exists and must be reckoned with.   
      
   - Wil   
      
      
   --   
         [ 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