我应该在引用上使用__restrict吗?

qdi*_*dii 7 c++ gcc reference visual-c++ restrict-qualifier

在我编写的程序中,我的一个函数声明如下:

bool parse( const sentence & __restrict sentence )
{
  // whatever
}
Run Code Online (Sandbox Code Playgroud)

当我使用Microsoft Visual Studio 2010 Express编译代码时,编译器会抱怨:

警告C4227:使用的时间错误:引用的限定符被忽略

但是,GCC文档的这一页说:

除了允许受限制的指针之外,您还可以指定受限制的引用,这些引用指示引用在本地上下文中没有别名.

同一页面给出了一个非常明确的例子:

 void fn (int *__restrict__ rptr, int &__restrict__ rref)
 {
   /* ... */
 }
Run Code Online (Sandbox Code Playgroud)

我是否误解了MVSC的警告?或者我应该将我的所有引用转换为指针以便__restrict适用?

Ker*_* SB 8

C++没有restrict像C99那样的概念.

但是,有几个编译器供应商提供了他们调用的C++编译器的扩展__restrict(请注意保留的名称!).鉴于这些是扩展,它们的行为由编译器供应商决定.您必须阅读文档并分别找出此扩展在每个编译器中的作用.

仅仅因为两个供应商选择相同的名称并不意味着扩展有任何共同点.