autoとdecltypeに問題があります。
void f(const vector<int>& a, vector<float>& b)
{
typedef decltype(a[0]*b[0]) Tmp;
for (int i=0; i < b.size(); ++i) {
auto p0 = new auto(a[i]*b[i]);
auto p1 = new decltype(a[i]*b[i]);
*p0=a[i]*b[i];
*p1=a[i]*b[i];
cout<<*p0<<endl;
cout<<*p1<<endl;
delete p0;
delete p1;
}
}
int main()
{
vector<float>vec2;
vec2.push_back(2.0);
vector<int>vec1;
vec1.push_back(5);
return 0;
}
上記のコードはGCC4.7でうまく動作します。'new auto(a [0] * b [0])'を使用して、タイプa [0] * b [0]にメモリを割り当てることはできますか?そして、この場合、decltypeとautoの違いを区別することはできません。