读书人

boost:any为什么不能存储普通字符串?解

发布时间: 2012-06-05 13:54:06 作者: rapoo

boost::any为什么不能存储普通字符串?
下面这段代码编译有错误:(boost1.49+vc10)
#include<boost/any.hpp>
int main(void){
boost::any a;
a=20;
a="abc";
return 0;
}

error C2536: “boost::any::holder<ValueType>::boost::any::holder<ValueType>::held”: 无法指定数组的显式初始值设定项

改成a=std::string("abc");就可以了
问题是: boost::any对于构造的值,类型还有限定条件么? 不是叫做"any"么?


[解决办法]
a=(const char*)"abc"; 就可以了
直接写不行是因为它的类型是 char [4], 而内建数组默认不支持拷贝的.
[解决办法]
any其实没啥太大用处
boost库很乱的,有的很强大,有的貌似强大,有的完全就是实验性质的。
不建议自己当小白鼠。
[解决办法]
额,boost此等神物实在难以捉摸。

读书人网 >C++

热点推荐