I’m using Visual C++ 2010, and here’s my code snippet:
std::set<int> s;
decltype(s)::value_type param = 0;
I got the following error message, anyone can help me?
> error C2039: 'value_type' : is not a member of '`global namespace''
> error C2146: syntax error : missing ';' before identifier 'param'
This is a Visual Studio bug that was raised last year on Connect. It is issue 757545 (“Cannot use decltype before scope operator”).
The issue has a workaround listed alongside it that is effectively the same as @iammillind’s, except it uses
std::identitythat was removed from<functional>shortly prior to the publication of C++11, for whatever reason. (std::common_typewith one template parameter is equivalent;std::remove_referenceis the same in some cases.)