#include <iostream>
#include <vector>
#include <list>
struct {
template<class containerType>
void operator() ( containerType& vec ) {
for (auto i = vec.begin(); i!=vec.end(); ++i) {
std::cout << *i << ", ";
}
std::cout << '\n';
}
} bar;
template<typename funcType>
void foo(funcType func) {
std::vector<int> vals = { 1, 2, 3 };
func(vals);
}
int main() {
foo( bar );
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bGlzdD4KCnN0cnVjdCB7CiAgICB0ZW1wbGF0ZTxjbGFzcyBjb250YWluZXJUeXBlPgogICAgdm9pZCBvcGVyYXRvcigpICggY29udGFpbmVyVHlwZSYgdmVjICkgewoKICAgICAgICBmb3IgKGF1dG8gaSA9IHZlYy5iZWdpbigpOyBpIT12ZWMuZW5kKCk7ICsraSkgewogICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICppIDw8ICIsICI7CiAgICAgICAgfQoKICAgICAgICBzdGQ6OmNvdXQgPDwgJ1xuJzsKCiAgICB9Cn0gYmFyOwoKdGVtcGxhdGU8dHlwZW5hbWUgZnVuY1R5cGU+CnZvaWQgZm9vKGZ1bmNUeXBlIGZ1bmMpIHsKCiAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiB2YWxzID0geyAxLCAyLCAzIH07CiAgICAgICAgZnVuYyh2YWxzKTsKCn0KCmludCBtYWluKCkgewogICAgICAgIGZvbyggYmFyICk7Cn0K