c++ - programming - cpp for beginners
C++ ¿Alguna forma de detectar mediante programación POD-struct? (3)
Probablemente no en tiempo de ejecución, pero en tiempo de compilación, puede utilizar el rasgo is_pod
de la biblioteca estándar de C ++ 0x o Boost.TypeTraits .
static_assert(std::is_pod<YourStruct>::value);
Tengo una estructura de datos que almacena estructuras POD (cada instancia almacena un solo tipo, ya que es básicamente una matriz de una estructura POD específica). A veces otro dev. modificará una de estas estructuras, agregando o modificando un tipo de datos. Si se agrega un elemento que no es POD, por ejemplo, std :: string, la estructura de datos explota en tiempo de ejecución, porque el modelo de memoria cambia. ¿Hay alguna forma de detectar si una clase o estructura es compatible con POD utilizando definiciones de compilador o una llamada en tiempo de ejecución (para evitar este problema de mantenimiento)? Estoy usando g ++ (GCC) 4.2.4.
Probablemente pueda usar la biblioteca boost type_traits y, en particular, boost::is_pod<T>::value
en una boost::is_pod<T>::value
estática.
Si no tienes boost o C ++ 0x, entonces quizás puedas usar algún hecho como que C ++ no permite usar el non-POD como miembro de union.