Re[12]: error C2784: could not deduce template argument
От: collider  
Дата: 15.10.15 14:27
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Здравствуйте, collider, Вы писали:


C>>я бы сказал найти первую подходящую.


TB>Количество возможных специализаций бесконечно. Перебрать все?



C>>И кстати, вы как, быстро с этой задачей справились?


TB>Да. Случай тривиальный. Стоит только добавить одну перегрузку, или подключить к проекту вектор, и случай перестаёт быть тривиальным. Нафиг такая фича, которая работает лишь в очень специфических условиях.


C>>А переменной типа std::vector в задаче нету


TB>Не понял, надо при выводе типа шаблона перебирать типы переменных, участвующих в данной единице трансляции? Круто будет, в чистом проекте шаблон выводится, подключил заголовок с вектором, не имеющим к шаблону и вообще коду никакого отношения, и оппа, перестал выводиться.


Я бы на месте компилятора действовал так:
есть
template<class T>
struct struct_t
{
    struct_t(const T& x):m_value(x)
    {
    }
    T m_value;
};


template<class T>
void test_t(const struct_t<T>& x)
{
}

а эта сволочь, мне подсовывает
test_t(123);

Блин надо вычислить T, чтобы как то int преобразовывался к параметру функции.
А фиг знает, я ж до конструктора не доберусь, пока struct_t не конкретизирую. И о чем автор думал, когда такое писал?
А может, я ему засуну тип 123-х в struct_t и посмотрю как там жизня взыграет.
Блин.... Точно!!! А задача та стала другая преобразовать int в struct_t<int>.
Бинго!!! Такие задачки я то решать умею.. вот и конструктор не explicit лежит.
Ну а если бы и это не проканало, я бы ему int последовательно в другие щели пихал бы.
Отредактировано 15.10.2015 16:43 Кодт . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.