Re[13]: error C2784: could not deduce template argument
От: Кодт Россия  
Дата: 15.10.15 14:26
Оценка:
Здравствуйте, collider, Вы писали:

C>Ну так программист специализировал для того, чтобы сделать какие то отличные от обычного поведения действия. Это ж не аргумент, для того чтобы брать и бежать дальше


Нет, это именно аргумент. Специализации предпочтительнее основного шаблона.

Вот для этого и делаются рукодельные решатели уравнений с типами. Всякие enable_if, type_traits и т.п.
Можно написать такой решатель: "какого типа должен быть параметр T, чтобы foo<T> можно было сконструировать из типа X, и чтобы результат нас удовлетворил".
Формально, у нас выбор:
— T = X, или даже любой тип, к которому приводится X
— T = U*, где U — любой тип, к которому приводится X
— T = char, если X приводится к int
Нас удовлетворит, вероятно, решение T = X, так как остальные слишком уж странные.
Хотя, вдруг нам важно делать исключение для int --> char ? Не просто так ведь оно там есть?
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.