#include <iostream>
using namespace std;
struct ACE_Time_Value { };
ostream &operator<<(ostream &os, const ACE_Time_Value &) { os << "Apple" ; }
void foo(const ACE_Time_Value &) { cout << "Cherry" << endl; }
namespace mine {
ostream &operator<<(ostream &os, const ACE_Time_Value &) { os << "Banana" ; }
void foo(const ACE_Time_Value &) { cout << "Durian" << endl; }
void bar() {
ACE_Time_Value t;
::mine::foo(t); // OK
// cout << "The current time is " <<
// t << endl; // error: ambiguous overload for 'operator<<'
}
}
int main() {
mine::bar();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEFDRV9UaW1lX1ZhbHVlIHsgfTsKb3N0cmVhbSAmb3BlcmF0b3I8PChvc3RyZWFtICZvcywgY29uc3QgQUNFX1RpbWVfVmFsdWUgJikgeyBvcyA8PCAiQXBwbGUiIDsgfQp2b2lkIGZvbyhjb25zdCBBQ0VfVGltZV9WYWx1ZSAmKSB7IGNvdXQgPDwgIkNoZXJyeSIgPDwgZW5kbDsgfQoKbmFtZXNwYWNlIG1pbmUgewoJb3N0cmVhbSAmb3BlcmF0b3I8PChvc3RyZWFtICZvcywgY29uc3QgQUNFX1RpbWVfVmFsdWUgJikgeyBvcyA8PCAiQmFuYW5hIiA7IH0KCXZvaWQgZm9vKGNvbnN0IEFDRV9UaW1lX1ZhbHVlICYpIHsgY291dCA8PCAiRHVyaWFuIiA8PCBlbmRsOyB9CgoJdm9pZCBiYXIoKSB7CgkJQUNFX1RpbWVfVmFsdWUgdDsKCQk6Om1pbmU6OmZvbyh0KTsgLy8gT0sKCQkvLyBjb3V0IDw8ICJUaGUgY3VycmVudCB0aW1lIGlzICIgPDwKCQkvLyAgIHQgPDwgZW5kbDsgLy8gZXJyb3I6IGFtYmlndW91cyBvdmVybG9hZCBmb3IgJ29wZXJhdG9yPDwnCgl9Cn0KCmludCBtYWluKCkgewoJbWluZTo6YmFyKCk7Cn0=