C ++ decltype не может вывести тип
Действительно ли decltype действительно глючит в Visual Studio 2012 или это действительно сложно?
Пример:
namespace ptl
{
struct Test
{
Test(float ){}
};
template
static T* static_constructor(void* p, A0 a0){return new(p) T(a0);}
template
T* MakeVS2012Happy(T*);
}
inline auto ExampleFxn() -> decltype(ptl::MakeVS2012Happy(&ptl::static_constructor))
{
return &ptl::static_constructor;
}
inline auto ExampleFxn2() -> decltype(&ptl::static_constructor)
{
return &ptl::static_constructor;
}
ExampleFxn компилируется, потому что я 'Мы обернули код в decltype этой бессмысленной функцией.
ExampleFxn2 нет, VS2012 выдает чрезвычайно полезное сообщение об ошибке:
ошибка C3555: неверный аргумент для 'decltype»
Кто-нибудь знает, что вызывает это? Кажется, мне постоянно приходится бороться с decltype, чтобы заставить его работать как положено ...
Спасибо