在将私有成员作为参数传递给所有者的类函数时,通过聚合初始化来初始化私有成员是否正确?只需看下面的代码。
class A {
struct S {
int t, u;
};
public:
void f(const S& s) {}
};
int main() {
A a;
a.f({1, 2}); // correct?
return 0;
}
我检查了标准和网络,似乎没有确切的答案。看起来机制如下: * 大括号初始化程序是公共的,因此用户不会违反访问限制。* 从初始化程序到“S”的隐式转换对于“S”是内部的,因此对于编译器也很好。
问题是,标准、草案或至少 cppreference 中是否有对此行为的描述的参考?