Thread overview
Compile error!
Aug 01, 2015
sdv
Aug 01, 2015
sdv
Aug 01, 2015
Kenji Hara
August 01, 2015
import std.stdio;
import core.memory;

struct sQueue(T)
{
	struct sNode
	{
		T	mfPayload = T.init;
		union{
			typeof(this)*	mfPrev;
			shared(typeof(this)*)	mfShPrev;
		}
		union{
			typeof(this)*	mfNext;
			shared(typeof(this)*)	mfShNext;
		}
	}


	//shared(sQueueNode)	mfRoot;
	sNode	mfRoot;

	void pfPut(T v,sNode* r = null)
	{
		if(r is null) r = &this.mfRoot;
		shared auto n = new sNode(v);

	}

}


int main(string[] argv)
{
	auto b1 = new sQueue!uint;



    writeln("Hello D-World!");
	writeln("Hello D-World!");
	writeln("Hello D-World!");
    return 0;
}

August 01, 2015
On Saturday, 1 August 2015 at 04:26:45 UTC, sdv wrote:
> import std.stdio;
> import core.memory;
>
> struct sQueue(T)
> {
> 	struct sNode
> 	{
> 		T	mfPayload = T.init;
> 		union{
> 			typeof(this)*	mfPrev;
> 			shared(typeof(this)*)	mfShPrev;
> 		}
> 		union{
> 			typeof(this)*	mfNext;
> 			shared(typeof(this)*)	mfShNext;
> 		}
> 	}
>
>
> 	//shared(sQueueNode)	mfRoot;
> 	sNode	mfRoot;
>
> 	void pfPut(T v,sNode* r = null)
> 	{
> 		if(r is null) r = &this.mfRoot;
> 		shared auto n = new sNode(v);
>
> 	}
>
> }
>
>
> int main(string[] argv)
> {
> 	auto b1 = new sQueue!uint;
>
>
>
>     writeln("Hello D-World!");
> 	writeln("Hello D-World!");
> 	writeln("Hello D-World!");
>     return 0;
> }

DMD32 D Compiler v2.067.1

August 01, 2015
2015-08-01 13:27 GMT+09:00 sdv via Digitalmars-d < digitalmars-d@puremagic.com>:

> On Saturday, 1 August 2015 at 04:26:45 UTC, sdv wrote:
>
>> import std.stdio;
>> import core.memory;
>>
>> struct sQueue(T)
>> {
>>         struct sNode
>>         {
>>                 T       mfPayload = T.init;
>>                 union{
>>                         typeof(this)*   mfPrev;
>>                         shared(typeof(this)*)   mfShPrev;
>>                 }
>>                 union{
>>                         typeof(this)*   mfNext;
>>                         shared(typeof(this)*)   mfShNext;
>>                 }
>>         }
>>
>>
>>         //shared(sQueueNode)    mfRoot;
>>         sNode   mfRoot;
>>
>>         void pfPut(T v,sNode* r = null)
>>         {
>>                 if(r is null) r = &this.mfRoot;
>>                 shared auto n = new sNode(v);
>>
>>         }
>>
>> }
>>
>>
>> int main(string[] argv)
>> {
>>         auto b1 = new sQueue!uint;
>>
>>
>>
>>     writeln("Hello D-World!");
>>         writeln("Hello D-World!");
>>         writeln("Hello D-World!");
>>     return 0;
>> }
>>
>
> DMD32 D Compiler v2.067.1
>

Do you mean the dmd segfault when you compile the code? Yes, it's a compiler bug. I filed the issue in bugzilla:

https://issues.dlang.org/show_bug.cgi?id=14853

Kenji Hara