Это связано с контекстом полного класса . Когда вы находитесь в теле функции-члена, класс считается завершенным и может использовать все, что определено в классе, независимо от того, где в классе он объявлен.
Параметры функции не являются частью этого контекста поэтому они должны быть типами, о которых известно в тот момент, когда вы пытаетесь их использовать.