Por que as funções virtuais não podem usar a dedução de tipo de retorno?
n3797 diz:
§ 7.1.6.4/14:
Uma função declarada com um tipo de retorno que usa um tipo de espaço reservado não deve ser virtual (10.3).
Portanto, o seguinte programa está mal formado:
struct s
{
virtual auto foo()
{
}
};
Tudo o que posso encontrar para esse raciocínio é essa vaga frase den3638:
virtual
Seria possível permitir dedução de tipo de retorno para funções virtuais, mas isso complicaria tanto a verificação de substituição quanto o layout da vtable, por isso parece preferível proibir isso.
Alguém pode fornecer uma justificativa adicional ou dar um bom exemplo (de código) que concorda com a citação acima?