A low-priority enhancement suggestion: import std.typecons: tuple; void main() { immutable t = tuple([1, 2]); } dmd 2.064beta3 gives: test.d(3): Error: cannot implicitly convert expression (tuple([1, 2])) of type Tuple!(int[]) to immutable(Tuple!(int[])) I presume built-in tuples could do this too. To do this with Phobos-defined tuples, there should be a way to know that the input dynamic array is pure. I don't know if and how this can be done.