> Here's a simple program: > > #include <algorithm> > #include <vector> > > int main() > { > std::vector<int> vec; > count(vec.begin(), vec.end(), 0); // shouldn't this be std::count ? > } > > The above compiles successfully, but I think it shouldn't. I expect a > message like "error: `count` not declared in scope" because I meant to > say std::count. Isn't this a bug, or am I missing something?
It is not a bug. std::count is being found by argument-dependent lookup [1]. Regards, Nate [1] http://en.wikipedia.org/wiki/Argument-dependent_name_lookup