gpt4 book ai didi

c++ - 如何检查类是否在 C++14 中有指针

转载 作者:搜寻专家 更新时间:2023-10-31 02:20:18 25 4
gpt4 key购买 nike

我有类(class):

struct A { // has no pointer members, POD - it's fine
int a, b;
char c;
};

struct B { // has no pointer members, but not POD - it's still fine
int a, b;
std::string s;
};

struct C { // has pointer members, it's not fine
int a,b;
char* cs;
};

我需要在编译时检测是否有任何类具有 struct C 的属性,即具有指针作为成员。

简短推理:我需要确保用户定义的类型可以通过复制或赋值(例如 struct A)或通过提供安全地序列化和反序列化到某个缓冲区类中用户定义的 serialize()deserialize() 方法(例如 struct Bstruct c) .

如果 BC 没有实现这些方法,那么编译应该失败,但是如果 A 没有这些方法,那么编译应该会成功。

更新:

解决方案来自 Check if a class has a pointer data member仅适用于:

struct D {
int* p; // the pointer must be named 'p'
};

这个问题是另一种情况。我们可以重新开放吗?

最佳答案

从 C++17 开始,这是不可能的。

您可以测试许多特征,但没有一种特征可以按照您需要的方式检查数据成员。 std::is_pod<> (将在 C++20 中弃用)是您可以获得的最好的。

关于c++ - 如何检查类是否在 C++14 中有指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32880990/

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