我正在观看 Bjarne Stroustrup 关于 C++11 风格 (链接) (00:35:30) 的主题演讲,并且无法理解以下内容(从幻灯片复制的代码):
void f(int n, int x)
{
Gadget g {n};
// ...
if (x<100) throw std::run_time_error{"Weird!"};
if (x<200) return;
// ...
}
我尝试使用结构和对象编译此代码,但在这两种情况下,编译器都告诉我它需要一个';' 在声明的末尾Gadget g
并且不会编译。
因此,我的问题是:
- 我是否正确假设
g
正在实例化? - 这段代码必须是什么类型的对象才能
Gadget
编译? - 这条线上有什么概念在起作用:
Gadget g {n};
?即声明后的大括号是什么? - (可能太宽泛了,但是)为什么编译器不能将大括号识别为有效语法?