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此等神物实在难以捉摸。