#include <iostream>
#include <functional> //Required for std::function.
//Not directly related to the problem.
//void myFunc(char seperator)
//{
// std::cout << "char overload" << std::endl;
//}
void myFunc(std::function<bool(char)> seperatorFunc)
{
std::cout << "std::function<bool(char)> overload" << std::endl;
}
void myFunc(const std::string &seperator)
{
std::cout << "std::string overload" << std::endl;
}
bool testCallback(char)
{
return true;
}
int main()
{
myFunc("String literal");
myFunc(std::string("std::string"));
//myFunc('c');
myFunc(testCallback);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4gLy9SZXF1aXJlZCBmb3Igc3RkOjpmdW5jdGlvbi4KCi8vTm90IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHByb2JsZW0uCi8vdm9pZCBteUZ1bmMoY2hhciBzZXBlcmF0b3IpCi8vewovLyAgICBzdGQ6OmNvdXQgPDwgImNoYXIgb3ZlcmxvYWQiIDw8IHN0ZDo6ZW5kbDsKLy99Cgp2b2lkIG15RnVuYyhzdGQ6OmZ1bmN0aW9uPGJvb2woY2hhcik+IHNlcGVyYXRvckZ1bmMpCnsKICAgIHN0ZDo6Y291dCA8PCAic3RkOjpmdW5jdGlvbjxib29sKGNoYXIpPiBvdmVybG9hZCIgPDwgc3RkOjplbmRsOwp9Cgp2b2lkIG15RnVuYyhjb25zdCBzdGQ6OnN0cmluZyAmc2VwZXJhdG9yKQp7CiAgICBzdGQ6OmNvdXQgPDwgInN0ZDo6c3RyaW5nIG92ZXJsb2FkIiA8PCBzdGQ6OmVuZGw7Cn0KCmJvb2wgdGVzdENhbGxiYWNrKGNoYXIpCnsKICAgIHJldHVybiB0cnVlOwp9CgppbnQgbWFpbigpCnsKICAgIG15RnVuYygiU3RyaW5nIGxpdGVyYWwiKTsKICAgIG15RnVuYyhzdGQ6OnN0cmluZygic3RkOjpzdHJpbmciKSk7CiAgICAvL215RnVuYygnYycpOwogICAgbXlGdW5jKHRlc3RDYWxsYmFjayk7CiAgICAKICAgIHJldHVybiAwOwp9