Por que um Nullable <T> não é um Parâmetro de Atributo Customizado válido quando T é?

Se eu tenho um enum como este

public enum Hungry
{
    Somewhat,
    Very,
    CouldEatMySocks
}

e um atributo personalizado como este

public class HungerAttribute : Attribute
{
    public Hungry HungerLevel { get; set; }
    public Hungry? NullableHungerLevel { get; set; }
}

eu posso fazer isso

[Hunger(HungerLevel = Hungry.CouldEatMySocks)]
public class Thing1

mas eu não posso fazer isso

[Hunger(NullableHungerLevel = Hungry.CouldEatMySocks)]
public class Thing2

Ele gera um erro que diz "'NullableHungerLevel' não é um argumento de atributo nomeado válido porque não é um tipo de parâmetro de atributo válido".

Por que isso não é permitido? Eu entendo que fundamentalmente não está na lista de tipos aceitos. Os tipos válidos parecem ser primitivos, enums, string, tipo e arrays unidimensionais dos tipos anteriores.

Isso é apenas uma regra antiga que não foi atualizada quando o Nullable apareceu?

questionAnswers(4)

yourAnswerToTheQuestion