Funkcja szablonowa

0

#include <iostream>
int main() {

    std::string w1, w2;
  	std::swap(w1,w2);

    return 0;
}

Dlaczego ten kod się kompiluje?
Przecież funkcja swap jest szablonowa i wypada mi skonkretyzować najpierw parametr, tzn:
std::swap<std;:string>(w1, w2).
Skąd w takim razie funkcja wie o typie?

1

Bo kompilator widzi jakiego typu są parametry i wie, że trzeba użyć std::swapstd::string

2

Szukaj pod nazwą: template argument deduction
np tu http://en.cppreference.com/w/cpp/language/template_argument_deduction

1 użytkowników online, w tym zalogowanych: 0, gości: 1