我正在观看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};
?即在声明之后的花括号是什么意思? - (可能太广泛了,但) 为什么编译器不将花括号识别为有效语法?