RHS 上的运算符重载和初始化器列表
在 C 编程中,初始化器列表是一种简洁的语法,用于使用表达式列表初始化聚合对象。虽然初始化列表可以在各种场景中方便地使用,但它们在运算符右侧 (RHS) 的使用一直是一个讨论点。
为什么初始化列表在 RHS 上受到限制
C 11 不允许在运算符的 RHS 上列出初始值设定项列表,包括二元运算符
初始化器列表的例外
尽管存在一般限制在运算符参数中使用初始值设定项列表,C 确实定义了特定的异常,其中初始值设定项列表是接受:
在你的代码中,你可以使用初始化列表作为 bar 构造函数的参数,该构造函数在
foo baz; baz << bar{1, -2, "foo", 4, 5}; // Legal
限制原因
限制运算符 RHS 上的初始值设定项列表的决定源于保持一致且清晰的语法的愿望。在所有上下文中允许初始化程序列表会在语言中引入额外的复杂性和潜在的歧义。
正如您问题中提到的讨论文件中所指出的,考虑了允许在右侧而不是左侧的初始化程序列表的替代方案太有问题了。因此,选择了仅在特定上下文中允许初始化列表的保守方法。
以上是为什么不能在 C 运算符的右侧使用初始化列表?的详细内容。更多信息请关注PHP中文网其他相关文章!