Warum kann ein unvollständiger Typ nicht für ungültig erklärt werden?

Warum gibt der folgende Code den folgenden Fehler aus?

Warum muss der Typ vollständig sein, um nach @ geworfen zu werdevoid?

struct Incomplete;
class Class
{
    virtual void foo(Incomplete &incomplete)
    {
        (void) incomplete;
        throw std::logic_error("not implemented");
    }
};

Error

error C2027: use of undefined type 'Incomplete'  
    see declaration of 'Incomplete'

Antworten auf die Frage(4)

Ihre Antwort auf die Frage