Если вы выполняете поиск на форумах openFrameworks , есть несколько постов, где люди предоставляют ссылки на скачивание из своих общедоступных папок Dropbox, например.
Операторы преобразования не могут быть универсальными. Из раздела спецификации 10.10 приведен формат декларатора-оператора-преобразования:
декларатора-оператора-преобразования : неявный оператор тип ( тип идентификатор ) явный оператор тип ( тип идентификатор )
Сравните это, скажем, с заголовком метода:
заголовком метода : атрибуты opt модификаторы метода opt partial opt тип возвращаемого значения имя-члена список-параметров типа opt ( список формальных параметров opt ) type-parameter-constraints-clauses opt
(Извините за форматирование - не знаю, как это лучше сделать.)
Обратите внимание, что формат оператора не включает список параметров типа или тип ограничения параметров.
Your code boils down to the line: return new Foo((U)a.Item)
Where you try to assign a baseclass to an inherited class, which is impossible.
Let's say T (base-class) is of type Stream
and U is of type MemoryStream
(inherited class), you cannot assign a Stream
to a variable of type MemoryStream
.
Я думаю, что краткий ответ - «Невозможно. Попробуйте вместо этого использовать метод»
Также кажется, что этот вопрос обманут. Решение для ограничения перегруженного оператора в обобщенных шаблонах .NET