D의 모든 내장 형식은 .init 속성에 기본값을 가지고 있으며 변수가 선언되면 메모리가 기본값으로 초기화된다. 이는 변수를 초기화하지 않고 사용하더라도 런타임에 문제가 발생하지 않도록 돕는 장치이다. 다음 코드를 보자. (표준 라이브러리를 사용하기 위한 import선언은 배제한다.)

void main()
{
   int a;
   writeln(a);
}

위 코드에서는 a가 int.init, 즉 0 으로 초기화되어 0이 출력된다. 그렇다면 a에 void를 대입하면 어떻게 될까.

void main()
{
   int a = void;
   writeln(a);
}

위 코드의 실행 결과 a는 쓰레기 값이 된다. 변수의 자동 초기화는 초기화되지 않은 변수가 부주의하게 사용되는 경우를 대비한 D의 배려이므로, 만약 변수가 생성당시 초기화되지 않았더라도 사용되기 전에 어떤 값으로 초기화되는 것이 보장되는 경우에는 불필요한 오버헤드가 된다. 이 때 변수에 void를 대입함으로서 자동 초기화 기능을 변수 생성 과정에서 배제할 수 있다. 이 기능은 단일한 내장 형식 뿐 아니라 배열, 구조체에도 동일하게 적용된다.

//배열의 경우
int[3] getarray()
{
	int[3] array = void;
	
	foreach(i, ref a; array)
		a = i;
	
	return array;
}

//구조체의 경우
struct S { int a; bool b; }

void getByRef(ref S s)
{
	s.a = 123;
	s.b = true;
}

void main()
{
	S s = void;
	getByRef(s);
	writeln(s.a, s.b);
}