C++17
Andrei Alexandrescu via Digitalmars-d
digitalmars-d at puremagic.com
Wed Jan 27 09:08:09 PST 2016
On 01/27/2016 09:51 AM, Shachar Shemesh wrote:
>
> import std.stdio;
>
> struct RAII {
> int num;
>
> ~this() {
> writefln("Destructed %s", num);
> }
> }
>
> struct Container {
> int num;
> RAII raii;
>
> this(int num) {
> writefln("Constructing %s", num);
> this.num = num;
> raii = RAII(num);
>
> if( num==0 )
> throw new Exception("Ooops");
> }
> }
>
> void test(int num) {
> try {
> auto c = Container(num);
> writefln("Point %s", num);
> } catch(Exception ex) {
> writefln("Caught %s", ex.msg);
> }
> }
>
> void main()
> {
> test(1);
> test(0);
> }
Interesting. It may be worked around, but is arguably a mistake in the
language definition. Have you submitted an issue for this? -- Andrei
More information about the Digitalmars-d
mailing list