On Tuesday, 20 November 2018 at 13:01:40 UTC, Boris-Barboris
wrote:
https://run.dlang.io/is/LdylJX
Notice no "B destructor" line in stdout.
Just got bitten by the assumption that my Buffer struct that
transactionally aquires multiple external resources in
constructor will rollback via member destructors that were
successfully completed before the throw.
Can I get a clarification about current semantics? Should I
essentially never throw in constructors if I want to rely on
scope-based RAII?
And before we start a 10-page argument about the ideology of
constructors, I would mostly just like to hear that this is
documented somewhere, because I have certanly missed it.
For example:
https://books.google.de/books?id=5_eoCwAAQBAJ&pg=PA104&lpg=PA104&dq=dlang+rely+destructor&source=bl&ots=p33jiNUKBq&sig=yw1ymCzaRaueQ8yDDMjP75iRDYI&hl=de&sa=X&ved=2ahUKEwjosrGlhePeAhVrgM4BHcU6DEAQ6AEwBXoECAMQAQ#v=onepage&q=dlang%20rely%20destructor&f=false
@book{parker2015learning,
title={Learning D},
author={Parker, M.},
isbn={9781785289347},
url={https://books.google.de/books?id=5\_eoCwAAQBAJ},
year={2015},
publisher={Packt Publishing}
page=104
}
But yeah... I had troubles to find such a clear statement on
dlang.org too...