Почему не удается разрешить область при наличии decltype?

Насколько я понимаю, decltype используется для запроса типа объектов / переменных и так далее.

Из примеров, представленных в Википедии, таких как:

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

Я предположил, что мог сделать что-то вроде этого:

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

Ведь ведь эта строка легальна:

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

Увы, он не скомпилируется, ссылаясь на следующее:error C2039: 'value_type' : is not a member of 'глобальное пространство имен

Любые идеи относительно того, почему было сделано разрешение области, чтобы вести себя таким образом в присутствии decltype?

П.С .: Если есть какая-то разница, я использую MSVC2012 (без ноябрь ОСАГО)

Ответы на вопрос(1)

Ваш ответ на вопрос