c++ - 做什么 ({});在 C++ 中是什么意思?

标签 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 上测试了程序。它编译得很好。

最佳答案

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

查看现场演示 hereg++

上编译时

查看现场演示 here vc++ 上编译时。

关于c++ - 做什么 ({});在 C++ 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43435528/

相关文章:

c++ - 什么是 msvc_make.bat?

c++ - 对c++ vector 的交集

c++ - 我应该如何将一个值插入另一个的 "middle"?

javascript - 字符串引用的对象未显示

javascript - 范围问题,从一个 for 循环到另一个 for 循环引用迭代器 "i"

matlab - Matlab 中的范围界定是如何工作的?

c++ - 在 Z3 C++ API 中使用浮点运算

c++ builder, label.caption, std::string 到 unicode 转换

c++ - += 与 C++ 中的字符串

c++ - 在一个线程上用 ppoll 阻塞,在另一个线程上读/写同一个 fds 是否安全?