crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> boost any, Можно ли использовать без компиляции?
AD
  опции профиля:
сообщение 7.2.2013, 11:42
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Много ли файлов тащит использование 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?

Сообщение отредактировал AD - 7.2.2013, 11:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Влад
  опции профиля:
сообщение 7.2.2013, 13:50
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 146
Регистрация: 20.3.2009
Из: Санкт-Петербург
Пользователь №: 627

Спасибо сказали: 46 раз(а)




Репутация:   8  


http://www.boost.org/doc/libs/1_53_0/tools...html/index.html
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 8.2.2013, 8:06
Сообщение #3


Профессионал
*****

Группа: Модератор
Сообщений: 1593
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 218 раз(а)




Репутация:   12  


boost::any сам по себе не требует ничего, кроме заголовочников.
это чисто темплейты и функции, объявленные прямо в заголовочниках.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 9.12.2019, 6:07