Well, one might argue "restricts" rather than "guarantees": This function works on user defined types. If I implemented my own malloc based bigint, this would fail to compile, since malloc isn't pure.

In any case, that is another (and pre-existing) subject, so arguably off topic here.