разница между auto и decltype в c++0x

У меня проблемы с 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 в данном случае.

15
задан R. Martinho Fernandes 7 June 2012 в 15:36
поделиться