У нас был такой код…
namespace loc {
const wchar_t* get(const char* key);
}
Выяснилась такая штука. Для языков, которые мы не знаем и вынуждены «забивать» английским, а правила множественного числа другие, выводит что-то типа «5 day remaining» — просто потому, что у японского нет этих правил.
Хорошо, корректируем вот так.
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);
}
И тут возник камень преткновения на operator std::wstring. Если я его комментирую, выводит ошибку на
std::wstring xxx() {
return loc::get(key); // could not convert from TaggedCWstr to wstring
}
Если оставляю, выводит ошибку на
std::wstring s;
s = loc::get("key"); // ambiguous overload for op=
Можно ли как-то удовлетворить обоих?