C ++中的strict,__ restrict和_restrict_关键字有什么区别?

There are three entities named around restrict for which I wonder if there is any clear or subtle distinction:

这些实体实际上在功能上是否总是可以互换的?