Przestrzen nazw funkcji z <algorithm>

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?

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

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.

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