Согласно [basic.lookup.qual]/3,
В декларации, в которой описателе-идентификатор является квалифицирован-идентификатор, имена используются до квалифицированного идентификатора объявленные , рассматриваются в области определения пространства имен; имена, следующие за квалифицированным идентификатором, рассматриваются в области класса участника или пространства имен.
Тип возврата приходит до квалифицирован-идентификатор объявляется (то есть, A::Method
), тогда как тип параметра приходит после него, так что имя типа параметра, автоматически ищется в рамках A
, в то время как имя типа возврата - нет. Мы можем избежать дополнительной квалификации с использованием возвращаемого возвращаемого типа.
auto A::Method(B argument) -> B;
Я единственный парень, которому приходилось читать стандартную цитату 10 раз медленно, чтобы получить его? – user
@user Я понимаю, что читать его не так просто, если вы не знакомы с лексикой. Вот почему я также объяснил ниже. – Brian
Да, вы определенно сохранили мне еще 20 – user