Я думаю, что так как набор поиска, полученный в результате 10.2 / 7, приводит только к одному объявлению, перегрузка функций вообще отсутствует.13.3.1 / 4 будет применяться только в том случае, если / если набор поиска, полученный в результате 10.2 / 7, содержал два или более объявлений.
Редактировать: Возможно, я был не так ясен, как я надеялся.Даже если f
перегружен в A
, я думаю, что большинство из тех же рассуждений применимы.Возможно, лучше все шаг за шагом.(Обратите внимание, что в этом случае я использую ту же нотацию S (f, X), что и стандарт, но поскольку ваш самый производный класс - D, ваш S (f, D) соответствует их S (f, C)и ваши S (f, B) и S (f, C) соответствуют его S (f, B 1 ) и S (f, B 2 ).
Сначала s (f, D) пусто, потому что у нас нет объявления f, непосредственно содержащегося в D. На основании этого мы получаем 10.2 / 5.
В 10.2 / 6 мы начинаем сслияние s (f, B) с S (f, D). Поскольку s (f, D) в настоящее время пусто, мы следуем второму условию под первой точкой маркера, и S (f, D) становится копией S (f, B).
Затем мы должны объединить S (f, C) с S (f, D). В этом случае каждый из элементов подобъекта S (f, C) является элементом подобъектаS (f, D). Это удовлетворяет первому условию первой точки маркера, поэтому мы оставляем S (f, D) без изменений, и объединение завершено.
В этот момент больше нетбазовые классы B i для рассмотрения, поэтому наши S (f, D) = S (f, B). нет из объявлений from S (f, C) присутствует в конечном наборе перегрузок на всех .
Затем, если S (f, B) содержит две или более функций, мы переходим к 13.3.1.и разрешите набор перегрузки - но поскольку весь набор поступил через B, ситуация, о которой говорится в вопросе, просто не существует.