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, чтобы заставить его работать как положено ...

Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос