#include <iostream>
#include <vector>
struct S {
//std::vector<int> ns(1); //ERROR!
std::vector<int> ns = std::vector<int>(1);
};
int main() {
S s;
std::cout << (s.ns[0] = 123) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
使用括号初始值设定项似乎是一个错误.这背后的目的是什么?
我们的想法是拒绝任何可以解释为函数声明的语法.例如,
std::vector<int> ns();
Run Code Online (Sandbox Code Playgroud)
是一个函数声明.这些不是:
std::vector<int> ns{};
std::vector<int> ns = std::vector<int>();
Run Code Online (Sandbox Code Playgroud)
为了保持一致性,使用此表单的任何成员声明
T t(args...);
Run Code Online (Sandbox Code Playgroud)
是不允许的,这避免了最令人烦恼的解析惨败的重复.
| 归档时间: |
|
| 查看次数: |
1991 次 |
| 最近记录: |