为什么我们需要在Boost库中指定的泛型类型?模板不够吗? 个例子,假如我想要一个特定类型的容器,我只想做:(Boost)为什么我们需要一个泛型?
template<class Type>
vector<Type> v;
如果我想指定包含一切的容器,我简单的写:
vector v;
在解释升压::任何(http://www.boost.org/doc/libs/1_46_1/doc/html/any/s02.html)
类型转换,可容纳的 一些可能的一个值类型,例如 int和string,并在它们之间自由转换 ,例如 将5解释为“5”,反之亦然。 这些类型在脚本编写和其他解释语言中很常见。 boost :: lexical_cast支持这种 转换功能。
为什么我们需要像脚本语言(如PHP)中的隐式类型?
更进一步,在升压::任何例如,为什么:
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);
}
是可以接受的?容器是否使用在boost :: any中实现的operator =?
any & operator=(const any &);
哪使得boost :: any能够容纳任何类型?运算符=定义于boost ::任何解释为:
影响:RHS复制内容到 当前实例,丢弃以前 内容,使新的内容 相当于两个类型和价值 的rhs的内容,如果是 rhs.empty()则为空。
抛出:std :: bad_alloc或任何 由包含类型的构造函数复制 引起的异常。 赋值满足强大的 保证异常安全。
http://www.boost.org/doc/libs/1_46_1/doc/html/boost/any.html
嗯,我们并不需要* *它,但它总是不错的。 – ereOn 2011-05-24 07:02:04