Вы смотрите на __restrict__
в обратном направлении.
__restrict__
- это расширение реализации, которое программист может использовать для сигнализации намерение , чтобы максимизировать сгенерированный код качество и производительность («оптимизация»).
Это не проверка или добавленное ограничение для программы.
Это не часть системы типов, поэтому она не является частью Тип функции, поэтому ее нельзя применять на вызывных площадках (в общем).
Это похоже на некоторые другие расширения (например, __builtin_unreachable
), которые вы используете, чтобы что-то сказать компилятору.
В этом случае вы говорите: «Я не обращаюсь к pointee через любой другой указатель».
Вы не спрашиваете «пожалуйста, не позволяйте мне обращаться к pointee через любой другой указатель ".
C, и компиляторы C ++ уже выполняют строгие проверки" псевдонимов ", где они могут. Ключевое слово __restrict__
позволяет вам сообщить it «Я уверен в этом», в тех случаях, когда автоматическое обнаружение псевдонимов c не может работать (из-за Например, перевод единицы границ). Поскольку автоматическое обнаружение псевдонимов c не может работать, __restrict__
не может быть применено.
И, даже если бы это могло быть, это было бы противоположно назначению модификатора.