Я написал класс оболочки для строки ICU, и у меня есть компилятор с поддержкой перемещения, но ICU не предоставляет конструктор перемещения. Мне также не удалось найти функцию swap(), которую я мог бы использовать для выполнения этой работы. Как я могу реализовать семантику перемещения для строки ICU?Переместить конструктор для строки ICU
ответ
Если у вас все в порядке с разыменованием указателя каждый раз, когда вы обращаетесь к строке (я бы этого не делал), вы всегда можете сохранить строку icu в std::unique_ptr
, тогда перемещение будет таким же простым, как перемещение указателя ,
MyWrapper(MyWrapper && that)
:str_ptr(std::move(that.str_ptr))
{}
Лично я чувствовал бы себя лучше, фактически изменяя источник ICU.
, вероятно, должен подать билет против ICU. Или даже, внести свой вклад в источник. –
Я думал, что видел билет на этом, но я не могу его найти. –
билет находится по адресу http://www.icu-project.org/trac/ticket/10086 с соответствующим по адресу http://www.icu-project.org/trac/ticket/8324 – Dane
- 1. Переместить конструктор для карты
- 2. C++ - Переместить конструктор класса, содержащий строки
- 3. Переместить конструктор для типа указателя?
- 4. Переместить оператор присваивания, переместить конструктор
- 5. Переместить конструктор производного класса
- 6. Переместить конструктор C++
- 7. Переместить конструктор без указателей
- 8. Переместить конструктор/оператор =
- 9. Переместить конструктор не запускается
- 10. Переместить конструктор не работает?
- 11. Переместить конструктор не вызывается
- 12. Ошибка ICU ICU Ошибка
- 13. Переместить конструктор для оболочки значения/объекта?
- 14. Переместить конструктор для std :: string from char *
- 15. C++ Переместить конструктор для класса, содержащего вектор
- 16. Переместить конструктор на производный объект
- 17. Переместить конструктор, не вызывающий деструктор?
- 18. Печать строки UTF-8 в ICU
- 19. Переместить конструктор, конструктор неконтекстных копий, emplace в VS2010
- 20. Как создать регулярное выражение ICU для соответствия этому типу строки?
- 21. Код реализации ICU для BreakIterators
- 22. Выбор кодировки для icu :: UnicodeString
- 23. Неправильная документация для BreakIterator ICU?
- 24. Переместить конструктор (ссылка rvalue) в неявное преобразование
- 25. Переместить конструктор, вызывающий базовый класс Move Constructor
- 26. Переместить семантику, почему не вызван конструктор перемещения?
- 27. Переместить конструктор неограниченных союза аварий с invalid_pointer
- 28. Переместить вместо копии для boost :: dynamic_bitset Конструктор BlockInputIterator?
- 29. Переместить конструктор и перенести оператор присваивания для класса
- 30. ICU DateFormatSymbols :: getMonths()
Я полагаю, что перегрузка/специализация 'std :: move' для' icu :: string' не будет сокращать его? EDIT: ICU является открытым исходным кодом, не так ли? Почему бы просто не исправить класс, чтобы иметь конструктор перемещения? – rubenvb
@rubenvb 'std :: move' работает только на уровне уровня. Он просто меняет категорию значений аргумента на rvalue. Помимо этого, это функция идентификации. –
@rubenvb Вы имели в виду патч-источник, а затем вносить исправление, верно? –