C++ 与boost::bind一起使用静态_cast

C++ 与boost::bind一起使用静态_cast,c++,boost,bind,C++,Boost,Bind,我想把T型向量变换成K型向量。 我试过这个,但不起作用: transform(vec.rbegin(),vec.rend(),vecNew.begin(),boost::bind(static_cast<K>(),_1)); transform(vec.rbegin()、vec.rend()、vecNew.begin()、boost::bind(static_cast()、_1)); 我得到一个错误:“预期的主表达式在“')”标记之前”。我做错了什么?使用boost cast f

我想把T型向量变换成K型向量。 我试过这个,但不起作用:

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

我得到一个错误:“预期的主表达式在“')”标记之前”。我做错了什么?

使用boost cast functor
ll_static_cast()
使用boost cast functor
ll_static_cast()
不需要静态强制转换,除非没有从T到K的隐式转换。如果转换构造函数不是显式的,或者如果您是一个T::操作符K(),您可以执行以下操作:

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

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

除非没有从T到K的隐式转换,否则不需要静态转换。如果转换构造函数不是显式的,或者如果使用T::运算符K(),则可以执行以下操作:

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

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

您可能会说应该使用它,因为static_cast是一个运算符,如sizeof,而不是函数。您可能会说应该使用它,因为static_cast是一个运算符,如sizeof,而不是函数。