Распространяется под лицензией Boost Software License, версия 1.0. (См. сопроводительный файл<LICENSE_1_0.txt>или копию по адресуhttp://www.boost.org/LICENSE_1_0.txt)
Бывают случаи, когда общее (в смыслеобщеев отличие отшаблонное программирование)Тип необходим: переменные, которые действительно переменные, вмещающие значения многих других более конкретных типов, а не нормальных строгих и статических типов C++. Можно выделить три основных вида родового типа:
Преобразующие типы, которые могут содержать один из нескольких возможных типов значений, например<int>и<string>, и свободно конвертировать между ними, например, интерпретируя<5>как<"5">или наоборот. Такие типы распространены в скриптинге и других интерпретируемых языках.<boost::lexical_cast>поддерживает такую конверсионную функциональность.
Дискриминированные типы, которые содержат значения различных типов, но не пытаются преобразования между ними, т.е.<5>строго как<int>и не являются неявно конвертируемыми ни в<"5">, ни в<5.0>. Их безразличие к интерпретации, но осведомленность о типе эффективно делает их безопасными, универсальными контейнерами с единичными значениями, без каких-либо сюрпризов от неоднозначных преобразований.
Неизбирательные типы, которые могут относиться к чему угодно, но не обращают внимания на фактический базовый тип, поручая все формы доступа и интерпретации программисту. В этой нише доминирует<void *>, что предлагает множество возможностей для удивительного, неопределенного поведения.
Класс<boost::any>(на основе одноимённого класса, описанного в"Valued Conversions"Кевлином Хенни,C++ Report12(7), июль/август 2000) является вариантным типом значений, основанным на второй категории. Он поддерживает копирование любого типа стоимости и безопасное извлечение этого значения строго по отношению к его типу. Аналогичная конструкция, предлагающая более подходящие операторы, может быть использована для обобщенного функционального адаптера,<any_function>, обобщенного адаптера итератора,<any_iterator>и других типов объектов, которые нуждаются в однородной обработке во время выполнения, но поддерживают только соответствие шаблона шаблона времени компиляции.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.