2

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

4

1 に答える 1