#include <iostream>
#include <list>
using namespace std;
template<class T> struct funWrapper {
T my_function() {
cout << "normal" << endl;
return 0;
}
};
template<class T> struct funWrapper<std::list<T>> {
std::list<T> my_function() {
cout << "stdlist";
return std::list<T>();
}
};
int main() {
funWrapper<int> obj;
obj.my_function();
funWrapper<std::list<int>> obj2;
obj2.my_function();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBmdW5XcmFwcGVyIHsKICBUIG15X2Z1bmN0aW9uKCkgewogICAgY291dCA8PCAibm9ybWFsIiA8PCBlbmRsOwogICAgcmV0dXJuIDA7CiAgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGZ1bldyYXBwZXI8c3RkOjpsaXN0PFQ+PiB7CiAgc3RkOjpsaXN0PFQ+IG15X2Z1bmN0aW9uKCkgewogICAgY291dCA8PCAic3RkbGlzdCI7CiAgICByZXR1cm4gc3RkOjpsaXN0PFQ+KCk7CiAgfQp9OwoKCgppbnQgbWFpbigpIHsKICBmdW5XcmFwcGVyPGludD4gb2JqOwogIG9iai5teV9mdW5jdGlvbigpOwoKICBmdW5XcmFwcGVyPHN0ZDo6bGlzdDxpbnQ+PiBvYmoyOwogIG9iajIubXlfZnVuY3Rpb24oKTsKICByZXR1cm4gMDsKfQ==