#include <string>
int lua_getnumber() { return 42; }
std::string lua_getstring() { return "foo"; }
namespace lua {
template <typename T>
T get();
template <>
int get() { return lua_getnumber(); }
template <>
std::string get() { return lua_getstring(); }
}
#include <iostream>
int main() {
std::cout << lua::get<int>() << '\n';
std::cout << lua::get<std::string>() << '\n';
}
I2luY2x1ZGUgPHN0cmluZz4KCmludCBsdWFfZ2V0bnVtYmVyKCkgeyByZXR1cm4gNDI7IH0Kc3RkOjpzdHJpbmcgbHVhX2dldHN0cmluZygpIHsgcmV0dXJuICJmb28iOyB9CgpuYW1lc3BhY2UgbHVhIHsKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgVCBnZXQoKTsKCiAgICB0ZW1wbGF0ZSA8PgogICAgaW50IGdldCgpIHsgcmV0dXJuIGx1YV9nZXRudW1iZXIoKTsgfQogICAgdGVtcGxhdGUgPD4KICAgIHN0ZDo6c3RyaW5nIGdldCgpIHsgcmV0dXJuIGx1YV9nZXRzdHJpbmcoKTsgfQp9CgojaW5jbHVkZSA8aW9zdHJlYW0+CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6Y291dCA8PCBsdWE6OmdldDxpbnQ+KCkgPDwgJ1xuJzsKICAgIHN0ZDo6Y291dCA8PCBsdWE6OmdldDxzdGQ6OnN0cmluZz4oKSA8PCAnXG4nOwp9