Почему виртуальные функции не могут использовать вывод типа возврата?

n3797 говорит:

§ 7.1.6.4/14:

Функция, объявленная с типом возврата, который использует тип заполнителя, не должна быть виртуальной (10.3).

Поэтому следующая программа некорректна:

struct s
{
    virtual auto foo()
    {
    }
};

Все, что я могу найти для обоснования, это расплывчатыйn3638:

виртуальный

Можно было бы разрешить вычет возвращаемого типа для виртуальных функций, но это усложнило бы как проверку переопределения, так и размещение vtable, поэтому кажется предпочтительным запретить это.

Может ли кто-нибудь дать дополнительное обоснование или привести хороший (кодовый) пример, который согласуется с приведенной выше цитатой?