Использование decltype с указателями функций-членов

у меня есть некоторые проблемы с использованием decltype для указателей на функции-члены:

#include <iostream>
#include <type_traits>

struct A
{
    void func1() {}
    typedef decltype(&A::func1) type;
};

int wmain(int argc, wchar_t* argv[])
{
    typedef decltype(&A::func1) type;

    //Case 1
    std::wcout
        << std::boolalpha
        << std::is_member_function_pointer<type>::value
        << std::endl;

    //Case 2
    std::wcout
        << std::boolalpha
        << std::is_member_function_pointer<A::type>::value
        << std::endl;

    system("pause");
    return 0;
}

дело 1 печатает true как и ожидалось, но случай 2 печатает false.

Is decltype удаление свойства "member"типа? Если так, то почему?

кроме того, есть ли способ предотвратить это поведение? Мне нужно получить тип функции-члена, независимо от того, где я использую decltype.

пожалуйста помощь.

EDIT:

сообщается в Microsoft

1 ответов


для формальности (имея ответ на вопрос), это, по-видимому, ошибка в компиляторе VC2010. Файл отчета об ошибке, чтобы Microsoft могла исправить его в следующей версии.