Пример:
Код:
template<typename T>
void foo(T &x, T y) {
x = y;
}
Если затем я напишу
Код:
unsigned char a;
foo(a, 0);
компилятор выведет ошибку, потому что он вывел тип T для первого аргумента как unsigned char, а для второго int.
Есть ли способ заставить компилятор не выводить тип второго аргумента, а и пользовать ужн выведенный из первого аргумента тип T?
Ограничения: С++ не новее c++14, нет STL (компилятор avr-g++).