C++ 有一个不错的新特性:
struct Point{
int x;
int y;
int z;
};
Point p{.x=47, .y=1701, .z=0};
Run Code Online (Sandbox Code Playgroud)
但是如果我添加一个构造函数,那么我将被禁止使用漂亮的指定初始化器语法:
struct Point{
Point(int x, int y, int z = 0): x(x), y(y), z(z){}
int x;
int y;
int z;
};
static Point p{.x=47, .y=1701, .z = 0};
Run Code Online (Sandbox Code Playgroud)
错误:指定的初始值设定项不能与非聚合类型“Point”一起使用
我是否遗漏了一些明显的东西(为什么如果指定的初始化器与具有公共成员但不是聚合的结构/类一起工作会很糟糕)或者这只是一个没有添加到标准中的缺失功能?