ループを単純化するために、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が抽象的であることに関係していると結論付けました。
しかし、私はテストオブジェクトに合格する方法を変更してみました。ポインターでそれを行うと、機能します。
では、ループの代わりに、関数のシグネチャを保持し、バインドで変換を使用するために使用できるものはありますか?