为什么用括号括起来的令牌不是r值表达式?

Mar*_*n85 11 c++ rvalue parentheses

请考虑以下代码:

#include <iostream>

struct Foo
{
  Foo() : bar( 0 ) {}

  int bar;
};


int main()
{
  Foo foo;

  ++(foo.bar);

  std::cout<< foo.bar << std::endl;

  system("pause");
  return 0;
};
Run Code Online (Sandbox Code Playgroud)

为什么foo.bar评价为1?

括号中是否没有(foo.bar)创建一个未命名的(r值)表达式,然后递增?

Sin*_*all 9

因为标准明确规定在3.4.2第6段:

带括号的表达式是一个主表达式,其类型和值与所包含表达式的类型和值相同.括号的存在不会影响表达式是否为左值.

强调我的.

  • 我很困惑,因为:`struct Widget {} w;` - >`decltype(w)`和`decltype((w))`不一样.另见[link](https://skydrive.live.com/view.aspx?resid=F1B8FF18A2AEC5C5!1062),幻灯片33. (2认同)