crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в boost any
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Iron Bug Дата 8.2.2013, 8:06
  boost::any сам по себе не требует ничего, кроме заголовочников.
это чисто темплейты и функции, объявленные прямо в заголовочниках.
Влад Дата 7.2.2013, 13:50
  http://www.boost.org/doc/libs/1_53_0/tools...html/index.html
AD Дата 7.2.2013, 11:42
  Много ли файлов тащит использование boost::any? Просто, такая версия класса Variant не работает. Не хочет преобразовывать к типу.



/// Класс для перевода в любой тип данных
class Variant
{
public:
    template <typename T>
    Variant& operator=(T const& t)
    {
        typedef type<T> assign_type;
        object = std::auto_ptr<assign_type>(new assign_type(t));
        return *this;
    }

    template <typename T>
    operator T()
    {
        typedef type<T> assign_type;
        assign_type& type = dynamic_cast<assign_type&>(*object);
        return type.get();
    }

private:
    class base
    {
    public:
        virtual ~base() {}
    };

    typedef std::auto_ptr<base> base_ptr;

    template <typename T>
    class type: public base
    {
    public:
        type(T const& t): object(t) {}
        T get() const { return object; }

    private:
        T object;
    };
    base_ptr object;
};

И подумываю не изобретать велосипед, а использовать уже проверенную вещь. Или все же есть легковесны Variant?
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 0:10