Cześć,
mam najprostszą funkcję wykorzystującą szablony, która przyjmuje dwa argumenty tego samego rodzaju i zwraca większą wartość.
Jeżeli chodzi o liczby typu int czy double, działa poprawnie, natomiast problem pojawia się ze stringiem / charem.
Jeżeli wywołam funkcję w ten sposób:
funkcja<string>("A", "B");
lub
funkcja<char>('A', 'B');
Działanie programu także jest poprawne (czyli zwracane jest B, jako "większe"). Natomiast jeśli pozwolę na dedukcję typu, czyli wywołam funkcję w ten sposób:
funkcja("A", "B");
to wtedy funkcja zawsze zwraca pierwszy argument, to znaczy zawsze uznaje, że pierwszy jest większy. Jeżeli wywołam
funkcja("A", "B");
to zwróci A, a jeżeli zrobię to w ten sposób:
funkcja("B", "A");
to zwróci B.
Gdy pozwolę na dedukcję typów, to zmienne są typu const char*. Skąd wynika ten problem?