gpt4 book ai didi

c++ - 如何检测具有特定签名的静态成员函数的存在?

转载 作者:太空狗 更新时间:2023-10-29 19:39:23 24 4
gpt4 key购买 nike

我发现了几个关于 SO 处理在编译时检测(通过 SFINAE)给定类是否具有特定名称、类型或签名的成员的问题和答案。但是,我找不到同样适用于static public 成员函数的函数(当指向成员的技巧不起作用时)。有什么想法吗?

最佳答案

以下内容可能会有所帮助:( https://ideone.com/nDlFUE )

#include <cstdint>

#define DEFINE_HAS_SIGNATURE(traitsName, funcName, signature) \
template <typename U> \
class traitsName \
{ \
private: \
template<typename T, T> struct helper; \
template<typename T> \
static std::uint8_t check(helper<signature, &funcName>*); \
template<typename T> static std::uint16_t check(...); \
public: \
static \
constexpr bool value = sizeof(check<U>(0)) == sizeof(std::uint8_t); \
}

然后定义一个traits:

DEFINE_HAS_SIGNATURE(has_foo, T::foo, void (*)(void));

关于c++ - 如何检测具有特定签名的静态成员函数的存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23133683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com