mercredi 30 septembre 2015

How to check if class has pointers in C++14

I've got the classes:

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;
};

I need to detect in compile time if any class has the properties of struct C, i.e. has pointers as members.

Short reasoning: I need to assure a user-defined type can be safely serialized and deserialized to some buffer by copying or assignment (e.g. struct A) or by providing user-defined serialize() and deserialize() methods in the class (e.g. struct B and struct c).

If B or C do not have these methods implemented, then compilation should fail, but if A does not have the methods, then the compilation should succeed.

Aucun commentaire:

Enregistrer un commentaire