#include <vector>
struct C
{
std::vector<int> v;
decltype(v.begin()) begin() { return v.begin(); }
decltype(v.end()) end() { return v.end(); }
};
Clang ++ non ha alcun problema, ma MSVC 2013 dà il seguente errore:Perché Visual Studio 2013 ha problemi con questo decltype di questo membro della classe?
error C2228: left of '.begin' must have class/struct/union
Vedere http://stackoverflow.com/a/11235245/103167 per il motivo per cui questo stile di codifica è rotto in qualsiasi compilatore e si dovrebbe usare il tipo di ritorno trailing per 'decltype' sui membri di' this'. –