#include <iostream>
template<typename T>
struct MemoryRegion
{
};
int main()
{
MemoryRegion<int> FinalRegion(MemoryRegion<int>());
FinalRegion(NULL);
}
MemoryRegion<int> FinalRegion(MemoryRegion<int>(*)())
{
std::cout << "Function called\n";
return MemoryRegion<int>();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kc3RydWN0IE1lbW9yeVJlZ2lvbgp7Cn07CgppbnQgbWFpbigpCnsKICAgIE1lbW9yeVJlZ2lvbjxpbnQ+IEZpbmFsUmVnaW9uKE1lbW9yeVJlZ2lvbjxpbnQ+KCkpOwogICAgRmluYWxSZWdpb24oTlVMTCk7Cn0KCk1lbW9yeVJlZ2lvbjxpbnQ+IEZpbmFsUmVnaW9uKE1lbW9yeVJlZ2lvbjxpbnQ+KCopKCkpCnsKICAgICAgICBzdGQ6OmNvdXQgPDwgIkZ1bmN0aW9uIGNhbGxlZFxuIjsKICAgICAgICByZXR1cm4gTWVtb3J5UmVnaW9uPGludD4oKTsKfQo=