boost::any是个容器,只包容一个元素,而且可以用任意类别构造。因为其吧类型归一,所以就适合用STL容器来容纳。
这让人想起Lua里面的变量,比any更加宽泛。连函数都可以包括。内部可以“就地”产生一个函数来返回。
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <boost/any.hpp>
#include <vector>
#include <string>
#include <algorithm>
#include <boost/foreach.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
struct propty
{
std::string _name;
boost::any _val;
propty (std::string name, boost::any val) :_name (name), _val (val) {};
};
typedef std::vector<propty> proptys;
template <typename T>
bool contains (const boost::any& a)
{
return typeid(T) == a.type ( );
}
struct anyReader : std::unary_function<void,propty>
{
void operator()(const propty& p)
{
typedef const char* cchar;
std::cout << p._name