On Friday, 22 August 2014 at 02:22:16 UTC, Timothee Cour via
Digitalmars-d-learn wrote:
Especially the part mentioning D:{
D’s scope keyword, Python’s with statement and C#’s using
declaration all
provide limited RAII, by allowing resources to have a scoped
lifetime, but
none of them readily or cleanly support the clever tricks
allowed by C++’s
combination of smart pointers and RAII, such as returning
handles from
functions, multiple handles in the same scope, or handles held
by multiple
clients.
}
Even for C# those are not really problems. Returning from
functions is not a problem: you just return it and that's it,
because resource management is decoupled from types, the types
have no RAII semantics and you can move them around however you
want. On the other hand, in C# it's very easy to declare a
resource, while in C++ you would need to learn all the black
magic of RAII before you can declare a RAII type. Multiple
handles in the same scope are not frequent, nested if's cause
much more trouble. Handles held by multiple clients are even more
rare, and it's usually easy to figure out lifetime for non-memory
resources.