私はここでひどく間違ったことをしているようです。手伝って頂けますか?目的は、複雑なベクトルに inner_product を使用することです。
#include<iostream>
#include<vector>
#include <numeric>
#include <complex>
using namespace std;
template<class T>
complex< T > complex_prod(complex< T > a, complex< T > b)
{
return conj<T>(a)*b;
}
template<class T>
complex< T > add_c(complex< T > a, complex< T > b)
{
return a+b;
}
int main()
{
complex<double> c1(1.,3.);
complex<double> c2(2.,4.);
vector<complex<double> > C1(3,c1);
vector<complex<double> > C2(3,c2);
cout<<inner_product(C1.begin(),C2.end(),C2.begin(),0.,add_c<double>,complex_prod<double>) <<endl;
return 0;
}
なぜ変換の問題があるのか わかりません。すべてが定義されているようで、反復は問題になりません。