У меня возникли проблемы с использованием 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
.
Пожалуйста, помогите.
РЕДАКТИРОВАТЬ: