struct __ignore_t__ {
};
__ignore_t__ __ignore__;

forall(dtype T | sized(T))
__ignore_t__ ?=?(__ignore_t__ * dst, T src) {
	return *dst;
}

forall(dtype T | sized(T) | { void ?{}(T *, T); })
T ?=?(T * dst, __ignore_t__ src) {
	return *dst;
}

int main() {
	int x = 123, y = 456, z = 789;
	double j = 3.14, i = 8.77;
	[x, __ignore__, z] = [y, z, x];
	[i, j, __ignore__] = [0, i, j];
	printf("%d %d %d\n", x, y, z);
	printf("%g %g\n", i, j);
}
