DecltypeはVisualStudio2012で本当にバグがありますか、それとも実際にはこれほど使いにくいと思われますか?
例:
namespace ptl
{
struct Test
{
Test(float ){}
};
template<class T, class A0>
static T* static_constructor(void* p, A0 a0){return new(p) T(a0);}
template<class T>
T* MakeVS2012Happy(T*);
}
inline auto ExampleFxn() -> decltype(ptl::MakeVS2012Happy(&ptl::static_constructor<ptl::Test, float>))
{
return &ptl::static_constructor<ptl::Test, float>;
}
inline auto ExampleFxn2() -> decltype(&ptl::static_constructor<ptl::Test, float>)
{
return &ptl::static_constructor<ptl::Test, float>;
}
ExampleFxnは、その無意味な関数でコードをdecltypeにラップしたためにコンパイルされます。
ExampleFxn2はそうではなく、VS2012は非常に役立つエラーメッセージを吐き出します。
エラーC3555:「decltype」への引数が正しくありません
誰もがこれを引き起こす原因を知っていますか?期待どおりに機能させるには、常にdecltypeと戦わなければならないようです...
ありがとう