#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, std::string objS) // or char* objS
{ std::cout << "second overload\n"; }
int main()
{
print_to_default_file("test","where will I go");
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgogCmNsYXNzIEFERE9OIHsKICAgIHN0ZDo6c3RyaW5nIHM7CiAKcHVibGljOgogICAgQURET04oKSB7CiAgICAgICAgcyA9ICIiOwogICAgfQogCiAgICBBRERPTihzdGQ6OnN0cmluZyBpbikgewogICAgICAgIHMgPSBpbjsKICAgIH0KIAogICAgQURET04oY29uc3QgY2hhciBpbltdKSB7CiAgICAgICAgcyA9IGluOwogICAgfQogCiAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBzdGQ6OnN0cmluZyBpbikgewogICAgICAgIHMgPSBpbjsKICAgIH0KIAogICAgc3RkOjpzdHJpbmcgZ2V0U3RyaW5nKCkgewogICAgICAgIHJldHVybiBzOwogICAgfQp9OwogCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgcHJpbnRfdG9fZGVmYXVsdF9maWxlKFQgJm9iaiwgQURET04gYWRkb24gPSAiIikKeyBzdGQ6OmNvdXQgPDwgImZpcnN0IG92ZXJsb2FkXG4iOyB9CiAKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBwcmludF90b19kZWZhdWx0X2ZpbGUoVCAmb2JqLCBzdGQ6OnN0cmluZyAgb2JqUykgLy8gb3IgY2hhciogb2JqUwp7IHN0ZDo6Y291dCA8PCAic2Vjb25kIG92ZXJsb2FkXG4iOyB9CgppbnQgbWFpbigpCnsKICAgICBwcmludF90b19kZWZhdWx0X2ZpbGUoInRlc3QiLCJ3aGVyZSB3aWxsIEkgZ28iKTsKfQ==
prog.cpp: In function ‘int main()’:
prog.cpp:39:52: error: call of overloaded ‘print_to_default_file(const char [5], const char [16])’ is ambiguous
prog.cpp:39:52: note: candidates are:
prog.cpp:30:6: note: void print_to_default_file(T&, ADDON) [with T = const char [5]]
prog.cpp:34:6: note: void print_to_default_file(T&, std::string) [with T = const char [5]; std::string = std::basic_string<char>]