#include <iostream>
class PluralRule {};
PluralRule DEFAULT_RULE;
struct TaggedCWstr
{
const PluralRule* rule;
const wchar_t* text;
operator const wchar_t* () const { return text; }
operator std::wstring () const { return text; }
};
namespace loc {
TaggedCWstr get(const char* key) { return { &DEFAULT_RULE, L"text" }; }
}
std::wstring xxx() {
return loc::get("key"); // could not convert from TaggedCWstr to wstring
}
int main()
{
std::wstring s;
s = loc::get("key"); // ambiguous overload for op=
// Я забыл — в какой-то момент в Си++ отказались от op= в string x = "y";
return 0;
}