Przestrzen nazw funkcji z <algorithm>

Przestrzen nazw funkcji z <algorithm>
KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2518
0

W ponizszych przykladach pokazuje ze nie ma znaczenia czy uzyje std:: przed copy czy sort, a i tak przyklad kompiluje sie.

http://ideone.com/VfeOSL
http://ideone.com/C5VDkM

W jakiej przestrzeni nazw sa w koncu te funkcje?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Są w przestrzeni std - wygląda na to, że jak raz użyjesz tego std::, to jest to jakby "zapamiętywane" i gdy następuje odwołanie do jakiegoś następnego symbolu, automatycznie przeszukiwana jest ta przestrzeń nazw std.
http://ideone.com/ZCPrvN
prog.cpp:8:26: error: ‘sort’ was not declared in this scope

#Edit z tego co wyczytałem, to nazywa się to ADL :P

RE
  • Rejestracja: dni
  • Ostatnio: dni
3

To ADL. Działa na funkcji, dlatego kod w linku z powyższego posta się nie kompiluje.
A działa to tak, że gdy kompilator nie znajduje w obecnym scope funkcji o takiej sygnaturze, patrzy na to jakie parametry przekazałeś i przeszukuje dodatkowo namespace'y typów tych argumentów.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.