在 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