C++ 应用C++;函数指针的属性

C++ 应用C++;函数指针的属性,c++,function,attributes,clang,function-pointers,C++,Function,Attributes,Clang,Function Pointers,我试图包装一些包含函数指针的结构,这些函数指针期望在Linux上使用Clang使用Microsoftx64调用约定进行调用 通常,如果我需要对函数指针应用调用约定,我会在函数指针的签名中使用类似于\uu cdecl(虽然在本例中是\uu attribute\uu((ms_abi)))的东西,但我尝试使用C++风格的属性,如[[gnu::ms_abi]],因为我一直在代码库的其余部分使用这种类型的属性,所以我希望保持一致 这是我想要完成的一个例子: struct Status { ... } st

我试图包装一些包含函数指针的结构,这些函数指针期望在Linux上使用Clang使用Microsoftx64调用约定进行调用

通常,如果我需要对函数指针应用调用约定,我会在函数指针的签名中使用类似于
\uu cdecl
(虽然在本例中是
\uu attribute\uu((ms_abi))
)的东西,但我尝试使用C++风格的属性,如
[[gnu::ms_abi]]
,因为我一直在代码库的其余部分使用这种类型的属性,所以我希望保持一致

这是我想要完成的一个例子:

struct Status { ... }
struct Time { ... }
struct TimeCapabilities { ... }

[[gnu::ms_abi]]
using GetTime = std::add_pointer<Status(Time, TimeCapabilities)>::type;
struct Status{…}
结构时间{…}
结构时间功能{…}
[[gnu::ms_abi]]
使用GetTime=std::add\u pointer::type;

然而,我似乎找不到合适的位置来放置属性,而不会导致叮当声。如果没有办法使用C++风格的语法,那么我将使用较旧的语法,但为了一致性,我希望使用现代属性语法。

我只通过
[[gnu::ms_abi]]状态虚拟(Time,TimeCapabilities)获得了它;使用GetTime=decltype(&dummy)–不要以为你会想用它。。。放置属性的正确位置似乎正好位于函数类型前面(
使用GetTime=std::add_pointer::type
),但至少GCC会忽略该属性(发出警告)。不过,如果这符合标准,我就说不出来了。