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

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

Изменено 15.10.2015 12:51 collider

Здравствуйте, Кодт, Вы писали:

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


C>>Я и не говорю, что компилятор прям должен... Я хотел узнать, если ли какой финт ушами.


К>Финт ушами — сделать промежуточную функцию, грамотно решающую уравнение.

К>Самое тупое, подходящее для данного случая, — это
К>
К>template<class T> void test_t(T t) { test_t_impl(struct_t<T>(t)); }
К>


К>В общем же случае, нужно знать, какие сигнатуры у функций test_t существуют, и как — по задумке — их положено отображать на struct_t.

К>Есть там рядом есть всякие перегрузки, другие шаблоны, специализации шаблонов...

C>>Пример ваш не корректен,конечно foo<int>.

К>Это почему вдруг? Чем специализации хуже основного шаблона?

ну наверное тем, что 123- это int

template<class T>
void bar(T)
{

}

template<>
void bar<char>(char x)
{

}

template<>
void bar(char*)
{

}

int main()
{
  bar(123);
  return 0;
}
Re[6]: error C2784: could not deduce template argument
Здравствуйте, Кодт, Вы писали:

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


C>>Я и не говорю, что компилятор прям должен... Я хотел узнать, если ли какой финт ушами.


К>Финт ушами — сделать промежуточную функцию, грамотно решающую уравнение.

К>Самое тупое, подходящее для данного случая, — это
К>
К>template<class T> void test_t(T t) { test_t_impl(struct_t<T>(t)); }
К>


К>В общем же случае, нужно знать, какие сигнатуры у функций test_t существуют, и как — по задумке — их положено отображать на struct_t.

К>Есть там рядом есть всякие перегрузки, другие шаблоны, специализации шаблонов...

C>>Пример ваш не корректен,конечно foo<int>.

К>Это почему вдруг? Чем специализации хуже основного шаблона?

ну наверное тем, что 123- это int

template<class T>
void bar(T)
{

}

template<>
void bar<char>(char x)
{

}

template<>
void bar<char*>(char*)
{

}

int main()
{
  bar(123);
  return 0;
}