我正在尝试将 std::transform 与 std::bind 一起使用来简化循环。这是一些代码:
class ITest
{
public:
virtual CPrueba Prueba(double p, double d = 0)const = 0;
};
void foo(const ITest& test)
{
std::vector<double> v;
std::vector<CPrueba> vRes;
// ...
// ...
std::transform(v.begin(), v.end(), back_inserter(vRes),
bind(&ITest::Prueba, test, _1, 0));
//...
}
这不编译。
我正在使用 VS2008 SP1 并且遇到了很多我不理解的模板错误,所以我在 ideone (gcc 4.7.2) 中进行了尝试。那里我有一些更易读的错误,我得出的结论是它与 ITest 是抽象的有关。
但是我尝试通过更改传递测试对象的方式来尝试,如果我通过指针进行,它可以工作。
那么有什么我可以用来保留函数签名并仍然使用带有绑定的变换而不是循环的东西吗?