vectorの各要素を<algorithm>を使って3乗するとして、

案1
class MyPow {
pulic:
  double operator() (double value){return pow(value, a_)
  MyPow(double a):a_(a)
private:
  double a_;
}
に
transform(vec.begin(), vec.end(), vec.begin(), MyPow(3.0));


案2
class MyPow: public binary_func<double, double, double> {
  double operator() (double value, double a) {return pow(value,a);}
}
に
transform(vec.begin(), vec.end(), vec,begin(), bind2nd(MyPow(), 3.0))

どちらの方が好ましいのでしょうか。どちらでもOK?