为什么operator []只接受一个参数?

use*_*679 5 c++ operator-overloading subscript-operator

有很多与operator []相关的问题只有一个参数,但我找不到一个实际说明原因的问题.

例如,matrix[0, 3]调用ElementT& operator[](SizeT x, SizeT y)函数似乎是语言的一种非常自然的扩展.

是否有任何特殊原因(例如不兼容性),这种语法不在语言中,或者除了缺乏动机之外还有什么阻止它被添加?

(注意:这已被标记为重复,但事实并非如此.这个问题是"为什么语言中没有这种语法?"而不是"我如何解决这个问题?".如上所述,有很多问题解决后者,但没有一个回答前者.)

Joh*_*nck 4

逗号运算符(在这种特定情况下很少使用)不仅是工作中的一个难题,需要很长的过渡期才能实现标准化,而且我们已经有了人们使用的另一种解决方案:

ElementT& operator()(SizeT x, SizeT y)
Run Code Online (Sandbox Code Playgroud)

一些野外矩阵库使用这种形式。它有点难看,但欢迎使用 C++。:)