template struct vector { T* begin() { return nullptr; } T* end() { return nullptr; } }; template void stream_it(vector& t) { for(T& itr : t) { } } int main() { vector xs; stream_it(xs); return 0; }