Пользовательские фасеты локали игнорируются std::locale::categoryC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Пользовательские фасеты локали игнорируются std::locale::category

Сообщение Anonymous »

Я создал собственный аспект локали, специализируя std::ctype для int32_t, чтобы разместить мой std::basic_string.

Код: Выделить всё

namespace std
{
template 
class ctype : public std::ctype_base
{
public:
static std::locale::id id;
// other members
};
}
Однако я обнаружил, что этот фасет полностью игнорируется std::locale::ctype при повторном использовании фасетов из другой локали:

Код: Выделить всё

using my_ctype = std::ctype;
std::locale custom_loc(std::locale::classic(), new my_ctype());
auto my_facet = &std::use_facet(custom_loc);

std::locale default_loc(std::locale(""), new my_ctype());

std::locale with_original_ctype(default_loc, custom_loc, std::locale::ctype);
bool b = my_facet == &std::use_facet(with_original_ctype); // false

std::locale everything_replaced(custom_loc, default_loc, std::locale::all);
bool c = my_facet == &std::use_facet(everything_replaced); // true
По крайней мере, в MSVC, хотя with_original_ctype должен повторно использовать все фасеты std::locale::ctype из custom_loc, он не использовал my_facet (вместо сохранения значения, заданного для default_loc). Хуже того, Everything_replaced, несмотря на то, что он создан с использованием std::locale::all, взятого из default_loc, по-прежнему сохраняет исходный my_facet.
Как сделать так, чтобы фасет правильно интерпретировался как находящийся в категории std::locale::ctype?

Подробнее здесь: https://stackoverflow.com/questions/786 ... lecategory
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Laravel Blade: как получить доступ к переводам строк локали, отличной от текущей локали?
    Anonymous » » в форуме Php
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как скомпилировать фасеты?
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как создать вложенные фасеты в Altair с одинаковым масштабом по строкам?
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • `std::map<std::string, enum{1, 2, 3, 4}>` (или std::map<std::string, tuple<bool, bool>>`) кэширует` против `std: :set<st
    Anonymous » » в форуме C++
    0 Ответы
    324 Просмотры
    Последнее сообщение Anonymous
  • Std :: StringStream разбивается после установки UTF8 Locale
    Anonymous » » в форуме C++
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»