Информация об изменениях

Сообщение Re[12]: error C2784: could not deduce template argument от 15.10.2015 14:27

Изменено 15.10.2015 16:43 Кодт

Здравствуйте, 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 последовательно в другие щели пихал бы.
Re[12]: error C2784: could not deduce template argument
Здравствуйте, 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 последовательно в другие щели пихал бы.