Здравствуйте, collider, Вы писали:
C>Я и не говорю, что компилятор прям должен... Я хотел узнать, если ли какой финт ушами.
Финт ушами — сделать промежуточную функцию, грамотно решающую уравнение.
Самое
тупое, подходящее для данного случая, — это
template<class T> void test_t(T t) { test_t_impl(struct_t<T>(t)); }
В общем же случае, нужно знать, какие сигнатуры у функций test_t существуют, и как — по задумке — их положено отображать на struct_t.
Есть там рядом есть всякие перегрузки, другие шаблоны, специализации шаблонов...
C>Пример ваш не корректен,конечно foo<int>.
Это почему вдруг? Чем специализации хуже основного шаблона?