什么({});用C ++表示?

时间:2017-04-16 08:59:09

标签: c++ c++11 scope

AFAIK {}定义了一个新的范围,那么它定义了什么?

({});

编译器很好地编译了这个程序:

#include <iostream>
#include <string>

int main()
{
  std::string name;
  std::cout << "What is your name? ";
  {
     ({}); 
  }
  getline (std::cin, name);
  std::cout << "Hello, " << name << "!\n";
}

当我用({});替换();时,编译器无法编译程序。

为什么({});效果很好,但();没有?

我在cpp.sh上测试了该程序。它汇编得很好。

1 个答案:

答案 0 :(得分:8)

({});不是标准C ++的一部分。正如@HolyBlackCat所说,这是编译器扩展。使用-pedantic-errors禁用编译器扩展。

g++

上编译时,查看实时演示here

vc++上编译后,查看实时演示here