Ваши две функции имеют одинаковое название, operator++
. Это просто пишется иначе, чем функция с именем с идентификатором. Правило поиска членов класса заключается в том, что по умолчанию, если член с именем обнаружен в производном классе, базовый класс не проверяется. Производный элемент «скрывает» базовый элемент.
Обычный способ избежать сокрытия функции базового класса с другой сигнатурой и позволить разрешению перегрузки выбрать лучшую функцию, используя декларацию использования:
struct der : public base<der> {
der &operator++(){
return *this;
}
using base<der>::operator++;
};
Ваше предположение верно. В соответствии с исходным запросом функции он был добавлен ", поскольку это довольно часто запрашиваемая функция, и ее довольно просто достичь путем расширения существующих интерфейсов и классов. "
о создании отдельного проекта для заполнения этого интерфейса, но это еще не закрепилось.