[C++] Dlaczego specialization template nie rozróżnia string od generic?
Ostatnio zmodyfikowano 2019-12-18 22:29
chce_to_umiec Temat założony przez niniejszego użytkownika |
[C++] Dlaczego specialization template nie rozróżnia string od generic? » 2019-12-17 23:16:43 Kompilator: MinGW-w64 x86_64-8.1.0-release-posix-seh-rt_v6-rev0 Dlaczego, gdy podaję string dla "funkcji 2" (specialization template dla string), kompilator woli wybrać "funkcję 1" (generic)? Ale gdy już odkomentuję "funkcję 3", jej priorytet jest tak silny jak zwykłego przeciążenia i wtedy kompilator wybiera ją dla string? #include <iostream>
using namespace std;
template < class T > string test1( T left ) { return "1"; }
template < class T > string test1( string left ) { return "2"; }
int main() { string text = "terminal"; cout << test1( 123 ) << endl; cout << test1( text ) << endl; return 0; }
Wynik: |
|
darko202 |
» 2019-12-18 14:41:32 |
|
pekfos |
» 2019-12-18 19:23:38 Nie taka jest składnia specjalizacji szablonu. Drugiej wersji kompilator nie wybierze, bo nie ma jak wydedukować typu T. |
|
chce_to_umiec Temat założony przez niniejszego użytkownika |
» 2019-12-18 22:29:21 dziękuję! |
|
« 1 » |