我非常喜欢使用临时结构体和指定初始化器来模拟为我的函数提供命名参数。
struct Args {
int a;
int b;
};
int f(Args a) {
return a.a + a.b;
}
int g() {
return f({.a = 1, .b = 2}); // Works! That's what I want.
return f({1, 2}); // Also works. I want to forbid this, though.
}
然而,这些结构体仍可以通过位置初始化器列表进行初始化。也就是说,您仍然可以调用f({1, 2})
。
我想禁止这种情况,强制调用者在调用时显式命名参数。在C++20中,我该如何做到这一点?
f({})
是另一种可能的误用。 - 0x5453