Короче говоря, restrict
должен сообщать компилятору, что указатели не могут указывать на одну и ту же область памяти.Что очень полезно, скажем, для аргументов функций и дальнейшей оптимизации компилятора.В научных вычислениях очень широко используется restrict
.
В настоящее время ключевое слово restrict
является только частью C99, но не частью C ++.Мы знаем, что многие компиляторы C ++ поддерживают __restrict__
как расширение.Этот вопрос также подробно рассказывает о том, что restrict
и __restrict__
делают.
Теперь обсуждение в вышеупомянутом вопросе произошло давно и не говорит о C ++ 17, C++ 20, ни планов на будущие стандарты.Я нашел n3988 предложение , в котором обсуждаются restrict
-подобные псевдонимы в C ++, сложности с более богатым синтаксисом в C ++ и потенциальные способы их устранения.
Согласно блогу IBM (2014), N3988 был рекомендован для дальнейшей работы .
Этот вопрос рассказывает об истории restrict
и C ++ без каких-либо окончательных выводов относительно фактической реализации и упоминает статьи, которые я уже перечислил, или , упомянутый в комментариях (p1296) .
Мне не удалось найти ничего кроме этого в планах поддержки restrict
в будущем C ++ (насколько я знаю, это не часть C ++ 17).Это кажется очень полезной функциональностью, поэтому мне интересно,
- , если я что-то упустил в плане предложений / обсуждения?
- Есть ли другая информация об использовании
restrict
в C ++? - существуют ли альтернативные способы сделать оптимизацию компилятора (разрешенной
__restrict__
) возможной, используя только "стандартную" функциональность?