Экспериментируйте с decltype
для использования вместо typedef
или auto
ключевых слов, когда это будет сочтено необходимым. Некоторые из них (stl и пользовательская функция) работают, однако не работают напрямую с определенным пользователем объектом. Пожалуйста, мне нужно объяснение здесь.
#include <iostream>
#include <vector>
using namespace std;
struct foo {
void operator=(const int a ) { val_ =a;}
int get() const { return val_;}
private:
int val_;
};
ostream& operator << (ostream& os, foo f )
{
os << f.get();
return os;
}
foo func()
{
foo a;
return a;
}
int main()
{
vector<foo> foos;
decltype(foos) b; //works
decltype(foo);// don't work - says - error C3553: decltype expects an expression not a type
decltype(func()) a; //works
a = 100;
std::cout << a << " \n";
}
EDITED
vector<foo> foos;
decltype(foos) b; //works :tested with vc++ compiler
decltype(vector<foo>) b; //fails