Je viens de tomber sur le fait que plusieurs algorithmes de l'en-tête standard algorithm
ne nécessitent pas std::
.Y a-t-il une raison pour laquelle find_if, for_each, count etc. ne nécessitent pas std ::?
Exemple:
#include <vector>
#include <algorithm>
int main() {
std::vector<int> m;
count(m.begin(), m.end(), 0);
count_if(m.begin(), m.end(), [](auto){return true;});
for_each(m.begin(), m.end(), [](auto){});
find_if(m.begin(), m.end(), [](auto){return true;});
}
Y at-il une raison particulière pour cela? Les deux g++
et clang++
acceptent le code ci-dessus.
En raison de l'ADL, il est préférable de ne pas s'en remettre au cas où vous utiliseriez des conteneurs personnalisés. –
https://en.wikipedia.org/wiki/Argument-dependent_name_lookup –