使用static_cast和boost :: bind

时间:2010-08-07 10:59:25

标签: c++ boost bind

我想将类型为T的矢量转换为K类型的矢量。 我试过这个,但它不起作用:

transform(vec.rbegin(),vec.rend(),vecNew.begin(),boost::bind(static_cast<K>(),_1));

我收到错误:“在'之前预期的primary-expression')'token”。我做错了什么?

2 个答案:

答案 0 :(得分:4)

使用boost cast functor ll_static_cast<K>()

答案 1 :(得分:1)

除非没有从T到K的隐式转换,否则不需要静态转换。如果转换构造函数不是显式的,或者你是T :: operator K(),你可以这样做:

transform(vec.rbegin(),vec.rend(),vecNew.begin());

请注意,这也会颠倒元素的顺序。