c++containersrange-based-loop

C++ - Range based loop and namespaces


I've read that to make one's custom container work with range-based for loop, "things" need to be in the same namespace. What things need to be in same namespace? The begin-end free functions and the iterator that it returns? Or the begin-end functions and the container passed to them?


Solution

  • begin and end need to be in the same namespace as the container/range type (or some other namespace associated with the type), because the range-for loop is specified to find them only via ADL.

    That is assuming of course that you do not use the non-static member function approach, which is also fine for both.

    That's all.