Почему мы можем настроить ctors & amp; дторс но не аксессоры?

(Это не вопрос о перегрузке оператора. в общем.)

Мы знаем это Есть много веских причин использовать методы установки и получения.

Что ж, тогда мне кажется странным, что это не точки настройки доступа к элементу, т. Е. Если класс A имеет элемент данных x, то использование x в контексте lvalue на самом деле не просто использует x, а скорее вызывает некоторый метод (скажем, A::get_x_lvalue(), не берите в голову синтаксис), который по умолчанию

typename std::add_reference<decltype(x)>::type A::get_x_lvalue() {  return x; }

и может быть реализовано как переопределение, и аналогично, когда x используется в константе prvalue, вызовет переопределяемый

decltype(x) A::get_x_prvalue() const { return x; }

… аналогично, скажем, как вы делаете это в Javascript.

Мой вопрос:

  • Исторически, почему это не было добавлено к языку вместе с настраиваемыми конструкторами копирования, операторами присваивания и деструкторами?
  • Было ли что-то подобное официально предложено? Если да, то каков его статус или почему он был отклонен?
  • Существуют ли существенные недостатки такой схемы, кроме: 1. Более медленной компиляции и 2. Невозможности «доверять» периоду в my_a.x как простому доступу?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]