Я хорошо понимаю, когда использовать ограничение для аргументов функции. Но все статьи, которые я нашел до сих пор, никогда не упоминают другие объявления (такие как возвращаемые значения функции и локальные переменные).
Вот один пример:
extern int *alloc_foo(void);
extern int *alloc_bar(void);
int *foo = alloc_foo();
foo[i] = 42;
int *bar = alloc_bar();
f(foo[i]);
Если alloc_foo() и alloc_bar() гарантированно возвращают адреса без псевдонимов (например, если есть обертки для malloc), должен ли я заставить их возвращать ограничение? Должен ли я ограничивать foo и bar?