![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Filesystem V3 DesignBoost , ,
Осторожно:Эта страница документирует мышление в начале процесса разработки V3 и предназначена для исторических целей. Он не обновляется, чтобы отразить текущее состояние библиотеки. IntroductionВо время обзора Boost.Filesystem.V2 (Интернационализация) Питер Димов предположил, что шаблон класса< ProblemС файловой системой. V2, аргумент пути к определенной пользователем функции, которая предназначена для размещения нескольких типов символов и кодировок, должен быть записан как шаблон. Необходимо использовать перегрузки или метапрограммирование шаблонов, чтобы позволить аргументам быть написанными в виде строковых букв. Вот как это выглядит: template<class Path> void foo( const Path & p );inline void foo( const path & p ) { return foo<path>( p ); } inline void foo( const wpath & p ) { return foo<wpath>( p ); } Это действительно уродливо для такой простой потребности, и был бы комбинаторный взрыв, если бы функция принимала несколько аргументов Пути, и каждый из них мог быть либо узким, либо широким. Еще хуже, если поддерживать типы C++0x< SolutionОбзор:
Подписи, представленные вПроблемасжимаются до простого: void foo( const path & p ); Это означает снижение сложности кода. Спецификация также становится проще. Я считаю, что это будет намного проще в обучении и приведет к гораздо более гибкому пользовательскому коду. Другие преимущества:
Возможные проблемы:
Details
Когда тип аргумента функции пути класса соответствует типу аргумента API операционной системы для путей, не выполняется преобразование, а не преобразование в указанное кодирование, такое как одно из кодировок Unicode. Это позволяет избежать непредвиденных последствий и т.д. Other changesУнифицированная гибридная обработка ошибок:Идиома гибридной обработки ошибок последовательно применяется ко всем применимым функциям. AcknowledgementsПетр Димов предложил идею класса одного пути, который мог бы справиться с несколькими типами символов и кодировками. Уолтер Лэндри внес вклад в разработку и реализацию функций copy_any, copy_directory, copy_symlink и read_symlink. Пересмотрено29 декабря 201429 December, 2014[ORIG_END] --> Авторское право Beman Dawes, 2008 Использование, модификация и распространение регулируются Лицензией на программное обеспечение Boost версии 1.0. См.www.boost.org/LICENSE_1_0.txt Статья Filesystem V3 Design раздела может быть полезна для разработчиков на c++ и boost. Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: ::
|
|||||||||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |