Ответ 1
В первом фрагменте мы можем выводить (эффективный) тип возврата, потому что определение предоставляется в этой лексической точке — и наоборот не будет работать, если определения лексически меняются, что находится в унисон с [dcl.spec.auto]/10, так как мы должны запретить циклический вычет.
Что касается второго фрагмента, см. основная проблема 945, которая эффективно открылась основная проблема 643 и имеет дело с this
, используемым в концевых типах возврата, в которых тип класса еще неполный. AFAICS, текущая формулировка допускает его так же, как в первом случае (опять же, учитывая правильный порядок определений), но сохраняйте открытую проблему 1890 в виду; поставщики откладывают выполнение сомнительных материалов до подтверждения.