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

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

#include 
#include 

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::value
        << std::endl;

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

    system("pause");
    return 0;
}

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

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

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

Пожалуйста, помогите.

РЕДАКТИРОВАТЬ:

Сообщено в Microsoft

9
задан Nubcase 3 July 2011 в 01:04
поделиться