Boost.Any

标签: Boost Boost.Any
255人阅读 评论(0) 收藏 举报
分类:

Examples

#include <list>
#include <boost/any.hpp>

using boost::any_cast;
typedef std::list<boost::any> many;

void append_int(many & values, int value)
{
    boost::any to_append = value;
    values.push_back(to_append);
}

void append_string(many & values, const std::string & value)
{
    values.push_back(value);
}

void append_char_ptr(many & values, const char * value)
{
    values.push_back(value);
}

void append_any(many & values, const boost::any & value)
{
    values.push_back(value);
}

void append_nothing(many & values)
{
    values.push_back(boost::any());
}

bool is_empty(const boost::any & operand)
{
    return operand.empty();
}

bool is_int(const boost::any & operand)
{
    return operand.type() == typeid(int);
}

bool is_char_ptr(const boost::any & operand)
{
    try
    {
        any_cast<const char *>(operand);
        return true;
    }
    catch(const boost::bad_any_cast &)
    {
        return false;
    }
}

bool is_string(const boost::any & operand)
{
    return any_cast<std::string>(&operand);
}

void count_all(many & values, std::ostream & out)
{
    out << "#empty == "
        << std::count_if(values.begin(), values.end(), is_empty) << std::endl;
    out << "#int == "
        << std::count_if(values.begin(), values.end(), is_int) << std::endl;
    out << "#const char * == "
        << std::count_if(values.begin(), values.end(), is_char_ptr) << std::endl;
    out << "#string == "
        << std::count_if(values.begin(), values.end(), is_string) << std::endl;
}

Reference

Header <boost/any.hpp>

namespace boost {
  class bad_any_cast;
  class any;
  void swap(any &, any &);
  template<typename T> T any_cast(any &);
  template<typename T> T any_cast(any &&);
  template<typename T> T any_cast(const any &);
  template<typename ValueType> const ValueType * any_cast(const any *);
  template<typename ValueType> ValueType * any_cast(any *);
}

Class any

class any {
public:
  // construct/copy/destruct
  any();
  any(const any &);
  any(any &&);
  template<typename ValueType> any(const ValueType &);
  template<typename ValueType> any(ValueType &&);
  any & operator=(const any &);
  any & operator=(any &&);
  template<typename ValueType> any & operator=(const ValueType &);
  template<typename ValueType> any & operator=(ValueType &&);
  ~any();

  // modifiers
  any & swap(any &);

  // queries
  bool empty() const;
  void clear();
  const std::type_info & type() const;
};



查看评论

boost.any 容器

我们之前使用的STL容器只能装一种类型的元素 而boost这个容器可以装多种类型 any是一种很特殊的容器,它只能容纳一个元素, 但这个元素可以是任意的类型——int、 double、string, ...
  • u011676589
  • u011676589
  • 2013-08-29 15:34:39
  • 1035

boost.any 了解

boost::any的用法、优点和缺点以及源代码分析  讲解简单的any机理 4.6.1 万能类型boost::any  讲述any的使用...
  • m0_37693059
  • m0_37693059
  • 2017-07-25 16:56:40
  • 81

Boost.any的实现源码

#include&amp;lt;iostream&amp;gt; #include&amp;lt;iomanip&amp;gt; using namespace std; class any { p...
  • KnightOnHourse
  • KnightOnHourse
  • 2018-04-13 16:37:16
  • 31

boost.any源码整理和使用说明

Source#include #include  #include "boost/config.hpp"#include #include #include #include  namespace k...
  • laibach0304
  • laibach0304
  • 2007-08-24 22:44:00
  • 588

Boost使用指南之Boost.Any

Boost.Any可以代表任何数据类型。 通过使用Boost.Any我们可以让代码变得更加灵活。...
  • u013651556
  • u013651556
  • 2015-04-06 21:32:08
  • 216

Boost.Any 源码解析

Any 解决的问题 当一个 X( 变量/返回值/参数) 需要在运行时态接纳不同类型的参数的时候。 当不同类型(不来自同一个继承体系)的对象需要被视为统一类型的时候。(比如放入同一个容器) 传...
  • cchd0001
  • cchd0001
  • 2016-08-24 14:38:36
  • 287

boost.any实现任意类型存储

当你需要一个可变的类型时,有三种可能的解决方案: 无限制的类型,如 void*. 这种方法不可能是类型安全的,应该象逃避灾难一样避免它。可变的类型,即支持多种类型的存储和获取的类型。支持转换的类型,...
  • IT_PCode
  • IT_PCode
  • 2015-01-16 11:23:59
  • 1508

boost::any 使用注意问题

boost::any 使用注意问题 flyfish   编译环境  VC2010 看如下代码 void function(boost::any T) { try { BYT...
  • flyfish1986
  • flyfish1986
  • 2015-01-06 13:47:00
  • 1721

C++“准”标准库Boost学习指南(6):Boost.Any

Boost.Any Any库支持类型安全地存储和获取任意类型的值。当你需要一个可变的类型时,有三种可能的解决方案: 无限制的类型,如 void*. 这种方法不可能是类型安全的,应该象逃避灾...
  • cbNotes
  • cbNotes
  • 2016-10-19 14:11:34
  • 84

boost::any基本用法

boost::any的基本用法
  • morning_color
  • morning_color
  • 2015-09-23 15:37:32
  • 1633
    个人资料
    持之以恒
    等级:
    访问量: 8万+
    积分: 1119
    排名: 4万+
    个人主页
    最新评论