Dlaczego rozdzielczość zakresu nie działa w przypadku decltype?

Rozumiem, że decltype służy do odpytywania typu obiektów / zmiennych i tak dalej.

Z przykładów obecnych na wikipedii, takich jak:

int i;
decltype(i) x3; // type is int

Zakładałem, że mogę zrobić coś takiego:

class A
{
public:
    int a, b;
};

template<typename T>
struct IsClass
{
    enum { Yes = std::is_class<T>::value };
    enum { No = !Yes };
};

std::vector<A> v;
auto it = v.begin();
IsClass<decltype(it)::value_type>::Yes

Ponieważ po tym wszystkim ta linia jest legalna:

IsClass<std::vector<A>::iterator::value_type>::Yes

Niestety nie skompiluje się, powołując się na:error C2039: 'value_type' : is not a member of 'globalna przestrzeń nazw ''`

Jakieś pomysły na to, dlaczego rozdzielczość zakresu została zachowana w ten sposób w obecności decltype?

P.S: Jeśli to robi różnicę, używam MSVC2012 (bez Nov CTP)

questionAnswers(1)

yourAnswerToTheQuestion