Por que não consigo escrever Nullable <Nullable <int>>?

A definição deNullable<T> é

[SerializableAttribute]
public struct Nullable<T> where T : struct, new()

A restriçãowhere T : struct implica queT pode ser apenas um tipo de valor. Então eu entendo muito bem que não posso escrever:

Nullable<string> a; //error. makes sense to me

Porquestring é um tipo de referência, não um tipo de valor. Mas eu realmente não entendo por que não consigo escrever

Nullable<Nullable<int>> b; //error. but why?

Por que não é permitido? Depois de tudo,Nullable<int> é um tipo de valor e, portanto, pode ser um argumento do tipo paraNullablle<T>.

Quando o compilamos em ideone, ocorre esse erro ideone):

error CS0453: O tipo 'int?' deve ser um tipo de valor não nulo para poder usá-lo como parâmetro de tipo 'T' no tipo ou método genérico 'System.Nullable' Falha na compilação: 1 erro (s), 0 avisos

questionAnswers(5)

yourAnswerToTheQuestion