mam pewne problemy z używaniem decltype
dla wskaźników funkcji użytkownika:Korzystanie decltype ze wskaźników funkcji członkowskich
#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;
}
Przypadek 1 drukuje true
zgodnie z oczekiwaniami, ale przypadek 2 druki false
.
Czy decltype
rozbiera własności "członka" danego typu? Jeśli tak, dlaczego?
Czy istnieje sposób, aby temu zapobiec? Muszę uzyskać typ funkcji członka niezależnie od tego, gdzie używam decltype
.
Proszę o pomoc.
EDIT:
Wydaje się, że jest to kolejne ograniczenie z 'decltype' w aktualnej implementacji MSVC ... – Xeo
Właśnie sprawdzane z gcc 4.7, wypisuje" true "dla obu przypadków. – Vitus
@Xeo @Vitus Dzięki. Microsoft rujnuje wszystko ... – Nubcase