Использование 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:
1 ответов
для формальности (имея ответ на вопрос), это, по-видимому, ошибка в компиляторе VC2010. Файл отчета об ошибке, чтобы Microsoft могла исправить его в следующей версии.