Traits question and compiler crash

Filippo Fantini via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Apr 14 02:24:03 PDT 2015


Hello everyone!

I'm new to D.
While playing with around with traits,
I ended up writing this short example:


module test;

class Foo
{
     private int _value = 21;

     void foo()
     {
         import std.traits;

         alias funs = MemberFunctionsTuple!( typeof( this ), "bar" 
);

         version( crash )
	{
             void function( string ) b = &funs[ 0 ];
             b( "world" );
         }

         funs[ 0 ]( "world" );
     }

     void bar( string s )
     {
         import std.stdio;
         writeln( "hello ", s, "! ", _value );
     }
}

void main()
{
     auto f = new Foo();
     f.foo();
}


My first question is why building this with
dmd test.d

the line:
funs[ 0 ]( "world" );

does not crash, as I would expect because there's no this pointer 
to access _value when calling the member function.


The second question is why when building with:
dmd -version=crash test.d

the compiler just crashes instead.


These experiments were done with DMD v2.067.0 on Ubuntu x64 and 
on Windows x64.

Thank you!



More information about the Digitalmars-d-learn mailing list