2014-10-11 2 views
3

Есть много вопросов, связанных с оператором [], только принимая один аргумент, но я не могу найти тот, который на самом деле говорит, почему.Почему оператор [] принимает только один аргумент?

Например, кажется, что это естественное расширение языка, чтобы иметь matrix[0, 3] вызов функции ElementT& operator[](SizeT x, SizeT y).

Есть ли какая-либо особая причина (например, несовместимость) в том, что этот синтаксис отсутствует на этом языке или что-то кроме отсутствия мотивации, фактически препятствующей его добавлению?

(Примечание: это было отмечено как дубликат, но это не так. Этот вопрос «почему не этот синтаксис на языке?», А не «как мне решить проблему?». есть много вопросов, которые касаются последнего, но никто из них не отвечает на первый вопрос.)

+3

Возможно, что-то связано с 'a [1,3]' в настоящее время совершенно корректным синтаксисом ('' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''. –

+0

https://groups.google.com/a/isocpp.org/forum/#!topic/std-proposals/tOJx2TcHpH0 – chris

+0

Перегрузка оператора на C++ не может существенно изменить основы работы перегруженных операторов, и есть нет оператора '[]' в C++, который принимает несколько значений. –

ответ

4

Не только (запятая) используется в качестве ключа для работы, требующего длительного переходного периода, чтобы получить этот стандартизировано, у нас уже есть другое решение, которое люди используют:

ElementT& operator()(SizeT x, SizeT y) 

Некоторые библиотеки матриц в дикой природе используют эту форму. Это немного уродливо, но добро пожаловать на C++. :)

+0

И другие используют (или также используют) прокси, поэтому вы можете просто сцепить их. – Deduplicator

+0

Спасибо, я (блаженно) забыл все о запятой. – user673679

 Смежные вопросы

  • Нет связанных вопросов^_^