Visual Studio 2015 で C++ LLVM-vs2014 構成を使用すると、この静的アサートが失敗します。アサートは、clang++、gcc、または Visual C++ でも失敗しません。属性は、thiscall
適用できなくなったにもかかわらず、関数型に固執しています。バグレポートを提出しましたが、その間に属性を強制的に削除する方法があるかどうか知りたい. thiscall
取り外し可能ですか?
#include <type_traits>
template<typename T>
struct remove_member_pointer;
template<typename T, typename U>
struct remove_member_pointer<T U::*> {
using type = T;
};
struct foo;
using input = void(foo::*)();
using expect = void();
using result = typename remove_member_pointer<input>::type;
//This static_assert fails because there is a
//compiler-generated attribute left behind, making
//the type of result actually `void () __attribute__((thiscall))`
static_assert(std::is_same<result, expect>{}, "");
int main() { return{}; }
Microsoft Visual Studio コミュニティ 2015 バージョン 14.0.24720.00 アップデート 1