>>(*(type*)p) = value;
>クラッシュする

この場合、テンプレート展開?後の状態にすると

p = malloc(sizel);//4バイトメモリーを確保
(*(demo*)p) = value;//

demo型にdemo型を代入しているしだけなんだがなぜ?
(まともにコピーコンストラクタを設定してなかったらするかもしれないが…。)

>>そもそもVC++でもg++でもコンパイルが通らないのだが。
VC++持ってないんだけど、どんなエラー出るのかキボンヌ。
(もしかすると、行が多すぎたんで添削したせいかも。)