#include <iostream>
#include <string>
class ADDON {
std::string s;
public:
ADDON() {
s = "";
}
ADDON(std::string in) {
s = in;
}
ADDON(const char in[]) {
s = in;
}
void operator=(const std::string in) {
s = in;
}
std::string getString() {
return s;
}
};
template<typename T>
void print_to_default_file(T &obj, ADDON addon = "")
{ std::cout << "first overload\n"; }
template<typename T>
void print_to_default_file(T &obj, const char* objS) // or char* objS
{ std::cout << "second overload\n"; }
int main()
{
print_to_default_file("test", "where will I go");
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgogCmNsYXNzIEFERE9OIHsKICAgIHN0ZDo6c3RyaW5nIHM7CiAKcHVibGljOgogICAgQURET04oKSB7CiAgICAgICAgcyA9ICIiOwogICAgfQogCiAgICBBRERPTihzdGQ6OnN0cmluZyBpbikgewogICAgICAgIHMgPSBpbjsKICAgIH0KIAogICAgQURET04oY29uc3QgY2hhciBpbltdKSB7CiAgICAgICAgcyA9IGluOwogICAgfQogCiAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBzdGQ6OnN0cmluZyBpbikgewogICAgICAgIHMgPSBpbjsKICAgIH0KIAogICAgc3RkOjpzdHJpbmcgZ2V0U3RyaW5nKCkgewogICAgICAgIHJldHVybiBzOwogICAgfQp9OwogCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgcHJpbnRfdG9fZGVmYXVsdF9maWxlKFQgJm9iaiwgQURET04gYWRkb24gPSAiIikKeyBzdGQ6OmNvdXQgPDwgImZpcnN0IG92ZXJsb2FkXG4iOyB9CiAKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBwcmludF90b19kZWZhdWx0X2ZpbGUoVCAmb2JqLCBjb25zdCBjaGFyKiAgb2JqUykgLy8gb3IgY2hhciogb2JqUwp7IHN0ZDo6Y291dCA8PCAic2Vjb25kIG92ZXJsb2FkXG4iOyB9CiAKaW50IG1haW4oKQp7CiAgICAgcHJpbnRfdG9fZGVmYXVsdF9maWxlKCJ0ZXN0IiwgIndoZXJlIHdpbGwgSSBnbyIpOwp9