> -- Wlad писал(а):
> Смотрите, получается, что все типы, которые возможно будут служить в качестве аргументов при параметризации генерик-классов, должны заранее быть некоего "типа" (с набором интерфейсных функций), позволяющего использовать его внутри обобщённых функций генерика...

Это и есть интерфейсы. Суть интерфейса - возможность рассматривать ЛЮБОЙ тип как объект ДРУГОГО (интерфейсного) типа с ДРУГИМ "набором интерфейсных функций".

> -- Wlad писал(а):
> как вы будете (при таком подходе) хранить в коллекциях экземпляры, а не ссылки?

Есть несколько подходов. Самый простой - физически создавать именно ссылки, а для пользователья представлять их как экземпляры (что то вроде _box-ing в .Net). Но можно менять и физический размер инстанцированного типа, что намного сложнее и требует поддержки со стороны среды выполнения. Есть и комбинированные подходы.