Проблема в том, что вы не знаете, что такое E
, и как его построить. Это может быть любой тип (это универсально количественно ). Вы должны предоставить доказательства того, что, независимо от E
, оно действительно может быть построено. «Фабрика» данного типа служит своего рода свидетельством того, что она может.
Подумайте об этом на секунду: что если я передам Void
в качестве параметра E
? Как бы вы пошли на создание значения типа Void?
Возможность построить E
для всех E
- все равно что создать что-то из ничего. Это логическая невозможность. ∀E. E
- необитаемый комплект.
То, что вы действительно хотите, это либо для E
иметь ограничение, либо для передачи конструктора (фабрики) в качестве свидетельства того, что E
находится в наборе конструируемых объектов.